From patchwork Thu May 23 00:56:31 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 2604231 Return-Path: X-Original-To: patchwork-cifs-client@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 6911140077 for ; Thu, 23 May 2013 00:56:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755111Ab3EWA4g (ORCPT ); Wed, 22 May 2013 20:56:36 -0400 Received: from mail-gh0-f173.google.com ([209.85.160.173]:62954 "EHLO mail-gh0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754670Ab3EWA4g (ORCPT ); Wed, 22 May 2013 20:56:36 -0400 Received: by mail-gh0-f173.google.com with SMTP id g16so977458ghb.4 for ; Wed, 22 May 2013 17:56:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=IWpsQwiZHa2jTvEzGP1blyJLXDCBNHDq/lN+I5AXkUw=; b=fuYpJ1nH5+B0+ogxPglQ/cm4ECO6gAwuOwaiiMKNVR2dVBVZWKe9K0gTj0dQUh8/Be W8AuGmm52k024z/gZrp9rp5ZKpdonNxvfYhpcvz/0SjbQ1GoMquXu6SHNmbJI2Y88Pf5 CwYVvOGOIofBVPBIbQkdZcZkpTwY9D2riNHfGB9UG8jkBlLo3JEVUjXkK980cZB7Af/6 aTHsWcoI6wd5ouE5CEvjgJaa1iuslrKprLiJE0tno1XUXl3y94aTeP2mEOb9vVbwK0G4 TtaWloa88YBgpKWpNALoHSu4gKaL0gPD8zVRQyoIuH18Af284oCyAc1CfMZZeo/zZDl/ z19A== X-Received: by 10.236.155.103 with SMTP id i67mr7431101yhk.163.1369270595813; Wed, 22 May 2013 17:56:35 -0700 (PDT) Received: from salusa.poochiereds.net (cpe-107-015-113-143.nc.res.rr.com. [107.15.113.143]) by mx.google.com with ESMTPSA id a24sm14544829yho.24.2013.05.22.17.56.34 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 22 May 2013 17:56:35 -0700 (PDT) From: Jeff Layton To: smfrench@gmail.com Cc: linux-cifs@vger.kernel.org Subject: [PATCH] cifs: fix error handling when calling cifs_parse_devname Date: Wed, 22 May 2013 20:56:31 -0400 Message-Id: <1369270591-16546-1-git-send-email-jlayton@redhat.com> X-Mailer: git-send-email 1.8.1.4 X-Gm-Message-State: ALoCoQn5WxTP6EcusveqCs+a+xlENm3BAIxyLyfPjU9dmmMyp0KwZGSQenwlfLN9Z/WQMHjUOdcV Sender: linux-cifs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org When we allowed separate unc= and prefixpath= mount options, we could ignore EINVAL errors from cifs_parse_devname. Now that they are deprecated, we need to check for that as well and fail the mount if it's malformed. Also fix a later error message that refers to the unc= option. Signed-off-by: Jeff Layton --- fs/cifs/connect.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 0a7fdc3..c587657 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -1258,14 +1258,18 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, vol->backupuid_specified = false; /* no backup intent for a user */ vol->backupgid_specified = false; /* no backup intent for a group */ - /* - * For now, we ignore -EINVAL errors under the assumption that the - * unc= and prefixpath= options will be usable. - */ - if (cifs_parse_devname(devname, vol) == -ENOMEM) { - printk(KERN_ERR "CIFS: Unable to allocate memory to parse " - "device string.\n"); - goto out_nomem; + switch(cifs_parse_devname(devname, vol)) { + case 0: + break; + case -ENOMEM: + cifs_dbg(VFS, "Unable to allocate memory for devname.\n"); + goto cifs_parse_mount_err; + case -EINVAL: + cifs_dbg(VFS, "Malformed UNC in devname.\n"); + goto cifs_parse_mount_err; + default: + cifs_dbg(VFS, "Unknown error parsing devname.\n"); + goto cifs_parse_mount_err; } while ((data = strsep(&options, separator)) != NULL) { @@ -1827,7 +1831,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, } #endif if (!vol->UNC) { - cifs_dbg(VFS, "CIFS mount error: No usable UNC path provided in device string or in unc= option!\n"); + cifs_dbg(VFS, "CIFS mount error: No usable UNC path provided in device string!\n"); goto cifs_parse_mount_err; }