mount: add unc option to CIFS mount (needed for Linux 3.4+)
unc option for CIFS mount is mandatory after CIFS option parsing was rewritten in Linux 3.4 Signed-off-by: Martin Santesson <martinsn@axis.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
970aa6b5bd
commit
406ea15e2c
@ -1822,10 +1822,24 @@ static int singlemount(struct mntent *mp, int ignore_busy)
|
|||||||
|
|
||||||
hostname = mp->mnt_fsname + 2;
|
hostname = mp->mnt_fsname + 2;
|
||||||
len = strcspn(hostname, "/\\");
|
len = strcspn(hostname, "/\\");
|
||||||
if (len == 0 || hostname[len] == '\0')
|
if (len == 0 // 1st char is a [back]slash (IOW: empty hostname)
|
||||||
|
|| hostname[len] == '\0' // no [back]slash after hostname
|
||||||
|
|| hostname[len+1] == '\0' // empty share name
|
||||||
|
) {
|
||||||
goto report_error;
|
goto report_error;
|
||||||
|
}
|
||||||
c = hostname[len];
|
c = hostname[len];
|
||||||
hostname[len] = '\0';
|
hostname[len] = '\0';
|
||||||
|
|
||||||
|
// "unc=\\hostname\share" option is mandatory
|
||||||
|
// after CIFS option parsing was rewritten in Linux 3.4.
|
||||||
|
// Must pass it to the kernel. Must use backslashes.
|
||||||
|
{
|
||||||
|
char *unc = xasprintf("unc=\\\\%s\\%s", hostname, hostname + len + 1);
|
||||||
|
parse_mount_options(unc, &filteropts);
|
||||||
|
if (ENABLE_FEATURE_CLEAN_UP) free(unc);
|
||||||
|
}
|
||||||
|
|
||||||
lsa = host2sockaddr(hostname, 0);
|
lsa = host2sockaddr(hostname, 0);
|
||||||
hostname[len] = c;
|
hostname[len] = c;
|
||||||
if (!lsa)
|
if (!lsa)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user