* Kernel oops on 2.6.37-rc3, accessing remote DFS links
@ 2010-12-06 11:58 Robbert Kouprie
[not found] ` <alpine.DEB.2.00.1012061247180.31332-56sTcPfcKMhJlCS1zhbguEjk2N/pv5CcZkel5v8DVj8@public.gmane.org>
0 siblings, 1 reply; 9+ messages in thread
From: Robbert Kouprie @ 2010-12-06 11:58 UTC (permalink / raw)
To: linux-cifs-u79uwXL29TY76Z2rM5mHXA
Hi,
While troubleshooting a DFS issue, I hit a kernel panic:
foxdft13 = DFS root
foxdft08 = file server, serving "Global" share
# mount -t cifs //foxdft13.fox.local/company /mnt/bla/ -o
credentials=/creds,sec=ntlmv2,dom=fox
# ls -la /mnt/bla/Global/
fs/cifs/inode.c: CIFS VFS: in cifs_revalidate_dentry as Xid: 603 with
uid: 0
fs/cifs/inode.c: Revalidate: \\foxdft13.fox.local\company\Global inode
0xe289aaac count 1 dentry: 0xda8c53b8 d_time 151744140 jiffies 151765235
fs/cifs/inode.c: Getting info on \\foxdft13.fox.local\company\Global
fs/cifs/transport.c: For smb_command 50
fs/cifs/transport.c: Sending smb: total_len 148
fs/cifs/connect.c: rfc1002 length 0x27
fs/cifs/connect.c: invalid transact2 word count
Status code returned 0xc0000257 NT_STATUS_PATH_NOT_COVERED
fs/cifs/netmisc.c: Mapping smb error code 3 to POSIX err -66
fs/cifs/cifssmb.c: Send error in QPathInfo = -66
fs/cifs/inode.c: creating fake fattr for DFS referral
fs/cifs/inode.c: cifs_revalidate_cache: revalidating inode 62
fs/cifs/inode.c: cifs_revalidate_cache: invalidating inode 62 mapping
fs/cifs/inode.c: inode 0xe289aaac old_time=151744140 new_time=151765237
fs/cifs/inode.c: CIFS VFS: leaving cifs_revalidate_dentry (xid = 603) rc
= 0
fs/cifs/cifs_dfs_ref.c: in cifs_dfs_follow_mountpoint
fs/cifs/cifs_dfs_ref.c: CIFS VFS: in cifs_dfs_follow_mountpoint as Xid:
604 with uid: 0
fs/cifs/cifssmb.c: In GetDFSRefer the path
\foxdft13.fox.local\company\Global
fs/cifs/transport.c: For smb_command 50
fs/cifs/transport.c: Sending smb: total_len 144
fs/cifs/connect.c: rfc1002 length 0x124
fs/cifs/cifssmb.c: Decoding GetDFSRefer response BCC: 233 Offset 56
fs/cifs/cifssmb.c: num_referrals: 1 dfs flags: 0x2 ...
fs/cifs/cifs_dfs_ref.c: DFS: ref path: \foxdft13.fox.local\company\Global
fs/cifs/cifs_dfs_ref.c: DFS: node path: \foxdft08\company\Global
fs/cifs/cifs_dfs_ref.c: DFS: fl: 2, srv_type: 0
fs/cifs/cifs_dfs_ref.c: DFS: ref_flags: 0, path_consumed: 34
fs/cifs/dns_resolve.c: dns_resolve_server_name_to_ip: resolved: foxdft08
to 10.0.0.72
fs/cifs/cifsfs.c: Devname: \\foxdft08\company flags: 0
fs/cifs/connect.c: CIFS VFS: in cifs_mount as Xid: 605 with uid: 0
fs/cifs/connect.c: Domain name set
fs/cifs/connect.c: prefix path /Global
fs/cifs/connect.c: Username: vmtest
fs/cifs/connect.c: UNC: \\foxdft08\company ip: 10.0.0.72
fs/cifs/connect.c: Existing tcp session with server found
fs/cifs/connect.c: CIFS VFS: in cifs_get_smb_ses as Xid: 606 with uid: 0
fs/cifs/connect.c: Existing smb sess found (status=1)
fs/cifs/connect.c: CIFS VFS: leaving cifs_get_smb_ses (xid = 606) rc = 0
fs/cifs/connect.c: file mode: 0x1ed dir mode: 0x1ed
fs/cifs/connect.c: Found match on UNC path
fs/cifs/connect.c: cifs_put_smb_ses: ses_count=2
fs/cifs/cifssmb.c: In QFSDeviceInfo
fs/cifs/transport.c: For smb_command 50
fs/cifs/transport.c: Sending smb: total_len 72
fs/cifs/connect.c: rfc1002 length 0x44
fs/cifs/cifssmb.c: In QFSAttributeInfo
fs/cifs/transport.c: For smb_command 50
fs/cifs/transport.c: Sending smb: total_len 72
fs/cifs/connect.c: rfc1002 length 0x50
BUG: unable to handle kernel NULL pointer dereference at 0000001c
IP: [<f909e327>] cifs_sb_master_tcon+0x3/0x7 [cifs]
*pde = 00000000
Oops: 0000 [#2] SMP
last sysfs file: /sys/devices/virtual/bdi/cifs-183/uevent
Modules linked in: cifs hmac nls_utf8 nls_base xfs exportfs loop
parport_pc snd_pcm parport tpm_tis tpm tpm_bios snd_timer snd soundcore
psmouse snd_page_alloc pcspkr evdev serio_raw i2c_piix4 shpchp i2c_core
pci_hotplug ac container processor thermal_sys button ext3 jbd mbcache
sd_mod crc_t10dif ide_cd_mod cdrom ata_generic ata_piix libata floppy
e1000 mptspi piix mptscsih mptbase scsi_transport_spi ide_core scsi_mod
[last unloaded: cifs]
Pid: 1504, comm: ls Tainted: G D 2.6.37-rc3 #1 440BX Desktop
Reference Platform/VMware Virtual Platform
EIP: 0060:[<f909e327>] EFLAGS: 00010292 CPU: 2
EIP is at cifs_sb_master_tcon+0x3/0x7 [cifs]
EAX: 00000000 EBX: f7031400 ECX: 00000000 EDX: 00000000
ESI: 00000000 EDI: f70c4000 EBP: f70c4000 ESP: f37c7d30
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process ls (pid: 1504, ti=f37c6000 task=f50a69a0 task.ti=f37c6000)
Stack:
f90aa3ab 0000004c 00000007 f4380000 f7031400 00000000 f7031100 f70c4000
f90a2a79 f70c5200 c127c977 f72affff f501b600 0000025d ef110540 f72a6718
f70c5e00 00000000 ef110540 f50a69a0 f50a69a0 f70c4174 f72a6728 00007d9c
Call Trace:
[<f90aa3ab>] ? cifs_build_path_to_root+0x17/0xe5 [cifs]
[<f90a2a79>] ? cifs_mount+0x19f0/0x1e3f [cifs]
[<c127c977>] ? _raw_spin_lock_bh+0x8/0x1e
[<f90958f9>] ? cifs_do_mount+0x110/0x247 [cifs]
[<f90957e9>] ? cifs_do_mount+0x0/0x247 [cifs]
[<c10b8331>] ? vfs_kern_mount+0x9f/0x185
[<f90b4c03>] ? cifs_dfs_follow_mountpoint+0x233/0x3cc [cifs]
[<c10bebab>] ? do_follow_link+0xb6/0x1b1
[<c10bef38>] ? link_path_walk+0x292/0x372
[<c10bf0da>] ? path_walk+0x4f/0xae
[<c10bf20b>] ? do_path_lookup+0x1f/0x69
[<c10bfaa8>] ? user_path_at+0x37/0x5f
[<c1098b0d>] ? vma_prio_tree_insert+0x17/0x2d
[<c10b99b1>] ? vfs_fstatat+0x2a/0x50
[<c10b9a18>] ? vfs_lstat+0x13/0x15
[<c10b9a29>] ? sys_lstat64+0xf/0x23
[<c1052a6c>] ? sys_futex+0xfe/0x112
[<c10b503c>] ? filp_close+0x4e/0x54
[<c127f339>] ? do_page_fault+0x0/0x36b
[<c1002f9f>] ? sysenter_do_call+0x12/0x28
Code: c8 59 5f 39 ee 0f 8c 49 ff ff ff 8b 44 24 60 65 33 05 14 00 00 00
74 05 e8 3f 0c f9 c7 83 c4 64 5b 5e 5f 5d c3 90 90 90 8b 40 08 <8b> 40 1c
c3 55 89 c5 83 3d a4 47 3b c1 00 57 89 d7 56 89 ce 53
EIP: [<f909e327>] cifs_sb_master_tcon+0x3/0x7 [cifs] SS:ESP 0068:f37c7d30
CR2: 000000000000001c
---[ end trace 9642afdeb896e709 ]---
Any ideas?
Regards,
--
Robbert
^ permalink raw reply [flat|nested] 9+ messages in thread[parent not found: <alpine.DEB.2.00.1012061247180.31332-56sTcPfcKMhJlCS1zhbguEjk2N/pv5CcZkel5v8DVj8@public.gmane.org>]
* Re: Kernel oops on 2.6.37-rc3, accessing remote DFS links [not found] ` <alpine.DEB.2.00.1012061247180.31332-56sTcPfcKMhJlCS1zhbguEjk2N/pv5CcZkel5v8DVj8@public.gmane.org> @ 2010-12-06 12:08 ` Jeff Layton [not found] ` <20101206070846.1f2c35d4-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> [not found] ` <1291637583-10934-1-git-send-email-jlayton@redhat.com> 0 siblings, 2 replies; 9+ messages in thread From: Jeff Layton @ 2010-12-06 12:08 UTC (permalink / raw) To: Robbert Kouprie; +Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA On Mon, 6 Dec 2010 12:58:38 +0100 (CET) Robbert Kouprie <robbert-C1IQQP51G3M@public.gmane.org> wrote: > Hi, > > While troubleshooting a DFS issue, I hit a kernel panic: > > foxdft13 = DFS root > foxdft08 = file server, serving "Global" share > > # mount -t cifs //foxdft13.fox.local/company /mnt/bla/ -o > credentials=/creds,sec=ntlmv2,dom=fox > # ls -la /mnt/bla/Global/ > > fs/cifs/inode.c: CIFS VFS: in cifs_revalidate_dentry as Xid: 603 with > uid: 0 > fs/cifs/inode.c: Revalidate: \\foxdft13.fox.local\company\Global inode > 0xe289aaac count 1 dentry: 0xda8c53b8 d_time 151744140 jiffies 151765235 > fs/cifs/inode.c: Getting info on \\foxdft13.fox.local\company\Global > fs/cifs/transport.c: For smb_command 50 > fs/cifs/transport.c: Sending smb: total_len 148 > fs/cifs/connect.c: rfc1002 length 0x27 > fs/cifs/connect.c: invalid transact2 word count > Status code returned 0xc0000257 NT_STATUS_PATH_NOT_COVERED > fs/cifs/netmisc.c: Mapping smb error code 3 to POSIX err -66 > fs/cifs/cifssmb.c: Send error in QPathInfo = -66 > fs/cifs/inode.c: creating fake fattr for DFS referral > fs/cifs/inode.c: cifs_revalidate_cache: revalidating inode 62 > fs/cifs/inode.c: cifs_revalidate_cache: invalidating inode 62 mapping > fs/cifs/inode.c: inode 0xe289aaac old_time=151744140 new_time=151765237 > fs/cifs/inode.c: CIFS VFS: leaving cifs_revalidate_dentry (xid = 603) rc > = 0 > fs/cifs/cifs_dfs_ref.c: in cifs_dfs_follow_mountpoint > fs/cifs/cifs_dfs_ref.c: CIFS VFS: in cifs_dfs_follow_mountpoint as Xid: > 604 with uid: 0 > fs/cifs/cifssmb.c: In GetDFSRefer the path > \foxdft13.fox.local\company\Global > fs/cifs/transport.c: For smb_command 50 > fs/cifs/transport.c: Sending smb: total_len 144 > fs/cifs/connect.c: rfc1002 length 0x124 > fs/cifs/cifssmb.c: Decoding GetDFSRefer response BCC: 233 Offset 56 > fs/cifs/cifssmb.c: num_referrals: 1 dfs flags: 0x2 ... > > fs/cifs/cifs_dfs_ref.c: DFS: ref path: \foxdft13.fox.local\company\Global > fs/cifs/cifs_dfs_ref.c: DFS: node path: \foxdft08\company\Global > fs/cifs/cifs_dfs_ref.c: DFS: fl: 2, srv_type: 0 > fs/cifs/cifs_dfs_ref.c: DFS: ref_flags: 0, path_consumed: 34 > fs/cifs/dns_resolve.c: dns_resolve_server_name_to_ip: resolved: foxdft08 > to 10.0.0.72 > fs/cifs/cifsfs.c: Devname: \\foxdft08\company flags: 0 > fs/cifs/connect.c: CIFS VFS: in cifs_mount as Xid: 605 with uid: 0 > fs/cifs/connect.c: Domain name set > fs/cifs/connect.c: prefix path /Global > fs/cifs/connect.c: Username: vmtest > fs/cifs/connect.c: UNC: \\foxdft08\company ip: 10.0.0.72 > fs/cifs/connect.c: Existing tcp session with server found > fs/cifs/connect.c: CIFS VFS: in cifs_get_smb_ses as Xid: 606 with uid: 0 > fs/cifs/connect.c: Existing smb sess found (status=1) > fs/cifs/connect.c: CIFS VFS: leaving cifs_get_smb_ses (xid = 606) rc = 0 > fs/cifs/connect.c: file mode: 0x1ed dir mode: 0x1ed > fs/cifs/connect.c: Found match on UNC path > fs/cifs/connect.c: cifs_put_smb_ses: ses_count=2 > > fs/cifs/cifssmb.c: In QFSDeviceInfo > fs/cifs/transport.c: For smb_command 50 > fs/cifs/transport.c: Sending smb: total_len 72 > fs/cifs/connect.c: rfc1002 length 0x44 > fs/cifs/cifssmb.c: In QFSAttributeInfo > fs/cifs/transport.c: For smb_command 50 > fs/cifs/transport.c: Sending smb: total_len 72 > fs/cifs/connect.c: rfc1002 length 0x50 > BUG: unable to handle kernel NULL pointer dereference at 0000001c > IP: [<f909e327>] cifs_sb_master_tcon+0x3/0x7 [cifs] > *pde = 00000000 > Oops: 0000 [#2] SMP > last sysfs file: /sys/devices/virtual/bdi/cifs-183/uevent > Modules linked in: cifs hmac nls_utf8 nls_base xfs exportfs loop > parport_pc snd_pcm parport tpm_tis tpm tpm_bios snd_timer snd soundcore > psmouse snd_page_alloc pcspkr evdev serio_raw i2c_piix4 shpchp i2c_core > pci_hotplug ac container processor thermal_sys button ext3 jbd mbcache > sd_mod crc_t10dif ide_cd_mod cdrom ata_generic ata_piix libata floppy > e1000 mptspi piix mptscsih mptbase scsi_transport_spi ide_core scsi_mod > [last unloaded: cifs] > > Pid: 1504, comm: ls Tainted: G D 2.6.37-rc3 #1 440BX Desktop > Reference Platform/VMware Virtual Platform > EIP: 0060:[<f909e327>] EFLAGS: 00010292 CPU: 2 > EIP is at cifs_sb_master_tcon+0x3/0x7 [cifs] > EAX: 00000000 EBX: f7031400 ECX: 00000000 EDX: 00000000 > ESI: 00000000 EDI: f70c4000 EBP: f70c4000 ESP: f37c7d30 > DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 > Process ls (pid: 1504, ti=f37c6000 task=f50a69a0 task.ti=f37c6000) > Stack: > f90aa3ab 0000004c 00000007 f4380000 f7031400 00000000 f7031100 f70c4000 > f90a2a79 f70c5200 c127c977 f72affff f501b600 0000025d ef110540 f72a6718 > f70c5e00 00000000 ef110540 f50a69a0 f50a69a0 f70c4174 f72a6728 00007d9c > Call Trace: > [<f90aa3ab>] ? cifs_build_path_to_root+0x17/0xe5 [cifs] > [<f90a2a79>] ? cifs_mount+0x19f0/0x1e3f [cifs] > [<c127c977>] ? _raw_spin_lock_bh+0x8/0x1e > [<f90958f9>] ? cifs_do_mount+0x110/0x247 [cifs] > [<f90957e9>] ? cifs_do_mount+0x0/0x247 [cifs] > [<c10b8331>] ? vfs_kern_mount+0x9f/0x185 > [<f90b4c03>] ? cifs_dfs_follow_mountpoint+0x233/0x3cc [cifs] > [<c10bebab>] ? do_follow_link+0xb6/0x1b1 > [<c10bef38>] ? link_path_walk+0x292/0x372 > [<c10bf0da>] ? path_walk+0x4f/0xae > [<c10bf20b>] ? do_path_lookup+0x1f/0x69 > [<c10bfaa8>] ? user_path_at+0x37/0x5f > [<c1098b0d>] ? vma_prio_tree_insert+0x17/0x2d > [<c10b99b1>] ? vfs_fstatat+0x2a/0x50 > [<c10b9a18>] ? vfs_lstat+0x13/0x15 > [<c10b9a29>] ? sys_lstat64+0xf/0x23 > [<c1052a6c>] ? sys_futex+0xfe/0x112 > [<c10b503c>] ? filp_close+0x4e/0x54 > [<c127f339>] ? do_page_fault+0x0/0x36b > [<c1002f9f>] ? sysenter_do_call+0x12/0x28 > Code: c8 59 5f 39 ee 0f 8c 49 ff ff ff 8b 44 24 60 65 33 05 14 00 00 00 > 74 05 e8 3f 0c f9 c7 83 c4 64 5b 5e 5f 5d c3 90 90 90 8b 40 08 <8b> 40 1c > c3 55 89 c5 83 3d a4 47 3b c1 00 57 89 d7 56 89 ce 53 > EIP: [<f909e327>] cifs_sb_master_tcon+0x3/0x7 [cifs] SS:ESP 0068:f37c7d30 > CR2: 000000000000001c > ---[ end trace 9642afdeb896e709 ]--- > > Any ideas? > > Regards, > Yeah, it's a bug (obviously). I think I see what the problem is and will send along a patch in a few minutes. Are you able to reproduce this at will? -- Jeff Layton <jlayton-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org> ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20101206070846.1f2c35d4-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>]
* [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb [not found] ` <20101206070846.1f2c35d4-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> @ 2010-12-06 12:15 ` Jeff Layton [not found] ` <1291637703-10989-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2010-12-06 12:35 ` Kernel oops on 2.6.37-rc3, accessing remote DFS links Robbert Kouprie 1 sibling, 1 reply; 9+ messages in thread From: Jeff Layton @ 2010-12-06 12:15 UTC (permalink / raw) To: smfrench-Re5JQEeQqe8AvxtiuMwx3w Cc: robbert-C1IQQP51G3M, linux-cifs-u79uwXL29TY76Z2rM5mHXA It's possible that cifs_mount will call cifs_build_path_to_root on a newly instantiated cifs_sb. In that case, it's likely that the master_tlink pointer has not yet been instantiated. Fix this by having cifs_build_path_to_root take a cifsTconInfo pointer as well, and have the caller pass that in. Reported-by: Robbert Kouprie <robbert-C1IQQP51G3M@public.gmane.org> Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- fs/cifs/cifsproto.h | 3 ++- fs/cifs/connect.c | 2 +- fs/cifs/inode.c | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index f4cc34f..4e65b67 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h @@ -54,7 +54,8 @@ do { \ __func__, curr_xid, (int)rc); \ } while (0) extern char *build_path_from_dentry(struct dentry *); -extern char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb); +extern char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb, + struct cifsTconInfo *tcon); extern char *build_wildcard_path_from_dentry(struct dentry *direntry); extern char *cifs_compose_mount_options(const char *sb_mountdata, const char *fullpath, const struct dfs_info3_param *ref, diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index af7fa78..f2f58e3 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -2913,7 +2913,7 @@ remote_path_check: /* check if a whole path (including prepath) is not remote */ if (!rc && cifs_sb->prepathlen && tcon) { /* build_path_to_root works only when we have a valid tcon */ - full_path = cifs_build_path_to_root(cifs_sb); + full_path = cifs_build_path_to_root(cifs_sb, tcon); if (full_path == NULL) { rc = -ENOMEM; goto mount_fail_check; diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 0c1efbb..0023146 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -729,12 +729,12 @@ static const struct inode_operations cifs_ipc_inode_ops = { .lookup = cifs_lookup, }; -char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb) +char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb, + struct cifsTconInfo *tcon) { int pplen = cifs_sb->prepathlen; int dfsplen; char *full_path = NULL; - struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb); /* if no prefix path, simply set path to the root of share to "" */ if (pplen == 0) { @@ -881,7 +881,7 @@ struct inode *cifs_root_iget(struct super_block *sb, unsigned long ino) char *full_path; struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb); - full_path = cifs_build_path_to_root(cifs_sb); + full_path = cifs_build_path_to_root(cifs_sb, tcon); if (full_path == NULL) return ERR_PTR(-ENOMEM); -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
[parent not found: <1291637703-10989-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb [not found] ` <1291637703-10989-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2010-12-06 19:12 ` Robbert Kouprie [not found] ` <4CFD35A2.7080407-C1IQQP51G3M@public.gmane.org> 0 siblings, 1 reply; 9+ messages in thread From: Robbert Kouprie @ 2010-12-06 19:12 UTC (permalink / raw) To: Jeff Layton Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w, linux-cifs-u79uwXL29TY76Z2rM5mHXA Hi Jeff, Op 6-12-2010 13:15, Jeff Layton schreef: > It's possible that cifs_mount will call cifs_build_path_to_root on a > newly instantiated cifs_sb. In that case, it's likely that the > master_tlink pointer has not yet been instantiated. > > Fix this by having cifs_build_path_to_root take a cifsTconInfo pointer > as well, and have the caller pass that in. I still get an oops on 2.6.37-rc4-git5 with the patch applied: BUG: unable to handle kernel NULL pointer dereference at 0000001c IP: [<f8fd533b>] cifs_sb_master_tcon+0x3/0x7 [cifs] *pde = 00000000 Oops: 0000 [#1] SMP last sysfs file: /sys/devices/virtual/bdi/cifs-2/uevent Modules linked in: hmac nls_utf8 cifs nls_base xfs exportfs loop snd_pcm parport_pc parport tpm_tis tpm tpm_bios snd_timer snd soundcore snd_page_alloc psmouse evdev pcspkr serio_raw i2c_piix4 i2c_core shpchp container pci_hotplug processor thermal_sys ac button ext3 jbd mbcache sd_mod crc_t10dif ide_cd_mod cdrom ata_generic ata_piix libata floppy e1000 mptspi mptscsih mptbase scsi_transport_spi scsi_mod piix ide_core [last unloaded: scsi_wait_scan] Pid: 1362, comm: ls Not tainted 2.6.37-rc4-git5 #2 440BX Desktop Reference Platform/VMware Virtual Platform EIP: 0060:[<f8fd533b>] EFLAGS: 00010286 CPU: 0 EIP is at cifs_sb_master_tcon+0x3/0x7 [cifs] EAX: 00000000 EBX: f7156800 ECX: 40000040 EDX: 00000002 ESI: f7156800 EDI: f7156a00 EBP: 00000000 ESP: f72fddb0 DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 Process ls (pid: 1362, ti=f72fc000 task=f71379e0 task.ti=f72fc000) Stack: f8fe14f3 002c80d0 00000000 f7156a00 f7156800 00000000 00000000 f8fcc96b 0000007f f7156838 f5073d80 f50ac840 f8ff9f30 f8fcc7fd f522b000 c10b8301 f50ac900 f5073d80 00000000 f50ac900 f50ac900 f72fded4 00000000 f8febc6f Call Trace: [<f8fe14f3>] ? cifs_root_iget+0x1e/0x13f [cifs] [<f8fcc96b>] ? cifs_do_mount+0x16e/0x247 [cifs] [<f8fcc7fd>] ? cifs_do_mount+0x0/0x247 [cifs] [<c10b8301>] ? vfs_kern_mount+0x9f/0x185 [<f8febc6f>] ? cifs_dfs_follow_mountpoint+0x233/0x3cc [cifs] [<c10bec73>] ? do_follow_link+0xb6/0x1b1 [<c10bf000>] ? link_path_walk+0x292/0x372 [<c10bf1a2>] ? path_walk+0x4f/0xae [<c10bf2d3>] ? do_path_lookup+0x1f/0x69 [<c10bfb70>] ? user_path_at+0x37/0x5f [<c1098af9>] ? vma_prio_tree_insert+0x17/0x2d [<c10b9981>] ? vfs_fstatat+0x2a/0x50 [<c10b99e8>] ? vfs_lstat+0x13/0x15 [<c10b99f9>] ? sys_lstat64+0xf/0x23 [<c1052a04>] ? sys_futex+0xfe/0x112 [<c10b500c>] ? filp_close+0x4e/0x54 [<c127f54f>] ? do_page_fault+0x0/0x36b [<c1002f9f>] ? sysenter_do_call+0x12/0x28 Code: c8 59 5f 39 ee 0f 8c 49 ff ff ff 8b 44 24 60 65 33 05 14 00 00 00 74 05 e8 ef 9b 05 c8 83 c4 64 5b 5e 5f 5d c3 90 90 90 8b 40 08 <8b> 40 1c c3 55 89 c5 83 3d a4 47 3b c1 00 57 89 d7 56 89 ce 53 EIP: [<f8fd533b>] cifs_sb_master_tcon+0x3/0x7 [cifs] SS:ESP 0068:f72fddb0 CR2: 000000000000001c ---[ end trace 61b6103d05293c43 ]--- Regards, Robbert ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <4CFD35A2.7080407-C1IQQP51G3M@public.gmane.org>]
* Re: [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb [not found] ` <4CFD35A2.7080407-C1IQQP51G3M@public.gmane.org> @ 2010-12-06 19:34 ` Jeff Layton [not found] ` <20101206143423.74d8e236-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> 0 siblings, 1 reply; 9+ messages in thread From: Jeff Layton @ 2010-12-06 19:34 UTC (permalink / raw) To: Robbert Kouprie Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w, linux-cifs-u79uwXL29TY76Z2rM5mHXA On Mon, 06 Dec 2010 20:12:34 +0100 Robbert Kouprie <robbert-C1IQQP51G3M@public.gmane.org> wrote: > Hi Jeff, > > Op 6-12-2010 13:15, Jeff Layton schreef: > > It's possible that cifs_mount will call cifs_build_path_to_root on a > > newly instantiated cifs_sb. In that case, it's likely that the > > master_tlink pointer has not yet been instantiated. > > > > Fix this by having cifs_build_path_to_root take a cifsTconInfo pointer > > as well, and have the caller pass that in. > > I still get an oops on 2.6.37-rc4-git5 with the patch applied: > > BUG: unable to handle kernel NULL pointer dereference at 0000001c > IP: [<f8fd533b>] cifs_sb_master_tcon+0x3/0x7 [cifs] > *pde = 00000000 > Oops: 0000 [#1] SMP > last sysfs file: /sys/devices/virtual/bdi/cifs-2/uevent > Modules linked in: hmac nls_utf8 cifs nls_base xfs exportfs loop > snd_pcm parport_pc parport tpm_tis tpm tpm_bios snd_timer snd soundcore > snd_page_alloc psmouse evdev pcspkr serio_raw i2c_piix4 i2c_core shpchp > container pci_hotplug processor thermal_sys ac button ext3 jbd mbcache > sd_mod crc_t10dif ide_cd_mod cdrom ata_generic ata_piix libata floppy > e1000 mptspi mptscsih mptbase scsi_transport_spi scsi_mod piix ide_core > [last unloaded: scsi_wait_scan] > > Pid: 1362, comm: ls Not tainted 2.6.37-rc4-git5 #2 440BX Desktop > Reference Platform/VMware Virtual Platform > EIP: 0060:[<f8fd533b>] EFLAGS: 00010286 CPU: 0 > EIP is at cifs_sb_master_tcon+0x3/0x7 [cifs] > EAX: 00000000 EBX: f7156800 ECX: 40000040 EDX: 00000002 > ESI: f7156800 EDI: f7156a00 EBP: 00000000 ESP: f72fddb0 > DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 > Process ls (pid: 1362, ti=f72fc000 task=f71379e0 task.ti=f72fc000) > Stack: > f8fe14f3 002c80d0 00000000 f7156a00 f7156800 00000000 00000000 f8fcc96b > 0000007f f7156838 f5073d80 f50ac840 f8ff9f30 f8fcc7fd f522b000 c10b8301 > f50ac900 f5073d80 00000000 f50ac900 f50ac900 f72fded4 00000000 f8febc6f > Call Trace: > [<f8fe14f3>] ? cifs_root_iget+0x1e/0x13f [cifs] > [<f8fcc96b>] ? cifs_do_mount+0x16e/0x247 [cifs] > [<f8fcc7fd>] ? cifs_do_mount+0x0/0x247 [cifs] > [<c10b8301>] ? vfs_kern_mount+0x9f/0x185 > [<f8febc6f>] ? cifs_dfs_follow_mountpoint+0x233/0x3cc [cifs] > [<c10bec73>] ? do_follow_link+0xb6/0x1b1 > [<c10bf000>] ? link_path_walk+0x292/0x372 > [<c10bf1a2>] ? path_walk+0x4f/0xae > [<c10bf2d3>] ? do_path_lookup+0x1f/0x69 > [<c10bfb70>] ? user_path_at+0x37/0x5f > [<c1098af9>] ? vma_prio_tree_insert+0x17/0x2d > [<c10b9981>] ? vfs_fstatat+0x2a/0x50 > [<c10b99e8>] ? vfs_lstat+0x13/0x15 > [<c10b99f9>] ? sys_lstat64+0xf/0x23 > [<c1052a04>] ? sys_futex+0xfe/0x112 > [<c10b500c>] ? filp_close+0x4e/0x54 > [<c127f54f>] ? do_page_fault+0x0/0x36b > [<c1002f9f>] ? sysenter_do_call+0x12/0x28 > Code: c8 59 5f 39 ee 0f 8c 49 ff ff ff 8b 44 24 60 65 33 05 14 00 00 00 > 74 05 e8 ef 9b 05 c8 83 c4 64 5b 5e 5f 5d c3 90 90 90 8b 40 08 <8b> 40 > 1c c3 55 89 c5 83 3d a4 47 3b c1 00 57 89 d7 56 89 ce 53 > EIP: [<f8fd533b>] cifs_sb_master_tcon+0x3/0x7 [cifs] SS:ESP 0068:f72fddb0 > CR2: 000000000000001c > ---[ end trace 61b6103d05293c43 ]--- > > Regards, > Robbert > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html Interesting...does this (untested) patch fix it? It may have to be "wiggled" into place depending on your tree. If so, I'm surprised no one has tripped over this before... ----------------[snip]-------------------- cifs: fix check of error return from is_path_accessable This function will return 0 if everything went ok. Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- fs/cifs/connect.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index bee397f..9fbe7c5 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -2836,7 +2836,7 @@ remote_path_check: goto mount_fail_check; } rc = is_path_accessible(xid, tcon, cifs_sb, full_path); - if (rc != -EREMOTE) { + if (rc != 0 && rc != -EREMOTE) { kfree(full_path); goto mount_fail_check; } -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
[parent not found: <20101206143423.74d8e236-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>]
* Re: [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb [not found] ` <20101206143423.74d8e236-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> @ 2010-12-06 21:39 ` Robbert Kouprie 0 siblings, 0 replies; 9+ messages in thread From: Robbert Kouprie @ 2010-12-06 21:39 UTC (permalink / raw) To: Jeff Layton Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w, linux-cifs-u79uwXL29TY76Z2rM5mHXA Hey Jeff, This patch fixes the oops, and the remote DFS link is readable. Great! Thanks! Robbert Op 6-12-2010 20:34, Jeff Layton schreef: > On Mon, 06 Dec 2010 20:12:34 +0100 > Robbert Kouprie <robbert-C1IQQP51G3M@public.gmane.org> wrote: > >> Hi Jeff, >> >> Op 6-12-2010 13:15, Jeff Layton schreef: >>> It's possible that cifs_mount will call cifs_build_path_to_root on a >>> newly instantiated cifs_sb. In that case, it's likely that the >>> master_tlink pointer has not yet been instantiated. >>> >>> Fix this by having cifs_build_path_to_root take a cifsTconInfo pointer >>> as well, and have the caller pass that in. >> >> I still get an oops on 2.6.37-rc4-git5 with the patch applied: >> >> BUG: unable to handle kernel NULL pointer dereference at 0000001c >> IP: [<f8fd533b>] cifs_sb_master_tcon+0x3/0x7 [cifs] >> *pde = 00000000 >> Oops: 0000 [#1] SMP >> last sysfs file: /sys/devices/virtual/bdi/cifs-2/uevent >> Modules linked in: hmac nls_utf8 cifs nls_base xfs exportfs loop >> snd_pcm parport_pc parport tpm_tis tpm tpm_bios snd_timer snd soundcore >> snd_page_alloc psmouse evdev pcspkr serio_raw i2c_piix4 i2c_core shpchp >> container pci_hotplug processor thermal_sys ac button ext3 jbd mbcache >> sd_mod crc_t10dif ide_cd_mod cdrom ata_generic ata_piix libata floppy >> e1000 mptspi mptscsih mptbase scsi_transport_spi scsi_mod piix ide_core >> [last unloaded: scsi_wait_scan] >> >> Pid: 1362, comm: ls Not tainted 2.6.37-rc4-git5 #2 440BX Desktop >> Reference Platform/VMware Virtual Platform >> EIP: 0060:[<f8fd533b>] EFLAGS: 00010286 CPU: 0 >> EIP is at cifs_sb_master_tcon+0x3/0x7 [cifs] >> EAX: 00000000 EBX: f7156800 ECX: 40000040 EDX: 00000002 >> ESI: f7156800 EDI: f7156a00 EBP: 00000000 ESP: f72fddb0 >> DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 >> Process ls (pid: 1362, ti=f72fc000 task=f71379e0 task.ti=f72fc000) >> Stack: >> f8fe14f3 002c80d0 00000000 f7156a00 f7156800 00000000 00000000 f8fcc96b >> 0000007f f7156838 f5073d80 f50ac840 f8ff9f30 f8fcc7fd f522b000 c10b8301 >> f50ac900 f5073d80 00000000 f50ac900 f50ac900 f72fded4 00000000 f8febc6f >> Call Trace: >> [<f8fe14f3>] ? cifs_root_iget+0x1e/0x13f [cifs] >> [<f8fcc96b>] ? cifs_do_mount+0x16e/0x247 [cifs] >> [<f8fcc7fd>] ? cifs_do_mount+0x0/0x247 [cifs] >> [<c10b8301>] ? vfs_kern_mount+0x9f/0x185 >> [<f8febc6f>] ? cifs_dfs_follow_mountpoint+0x233/0x3cc [cifs] >> [<c10bec73>] ? do_follow_link+0xb6/0x1b1 >> [<c10bf000>] ? link_path_walk+0x292/0x372 >> [<c10bf1a2>] ? path_walk+0x4f/0xae >> [<c10bf2d3>] ? do_path_lookup+0x1f/0x69 >> [<c10bfb70>] ? user_path_at+0x37/0x5f >> [<c1098af9>] ? vma_prio_tree_insert+0x17/0x2d >> [<c10b9981>] ? vfs_fstatat+0x2a/0x50 >> [<c10b99e8>] ? vfs_lstat+0x13/0x15 >> [<c10b99f9>] ? sys_lstat64+0xf/0x23 >> [<c1052a04>] ? sys_futex+0xfe/0x112 >> [<c10b500c>] ? filp_close+0x4e/0x54 >> [<c127f54f>] ? do_page_fault+0x0/0x36b >> [<c1002f9f>] ? sysenter_do_call+0x12/0x28 >> Code: c8 59 5f 39 ee 0f 8c 49 ff ff ff 8b 44 24 60 65 33 05 14 00 00 00 >> 74 05 e8 ef 9b 05 c8 83 c4 64 5b 5e 5f 5d c3 90 90 90 8b 40 08 <8b> 40 >> 1c c3 55 89 c5 83 3d a4 47 3b c1 00 57 89 d7 56 89 ce 53 >> EIP: [<f8fd533b>] cifs_sb_master_tcon+0x3/0x7 [cifs] SS:ESP 0068:f72fddb0 >> CR2: 000000000000001c >> ---[ end trace 61b6103d05293c43 ]--- >> >> Regards, >> Robbert >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in >> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > Interesting...does this (untested) patch fix it? It may have to be "wiggled" into > place depending on your tree. If so, I'm surprised no one has tripped > over this before... > > ----------------[snip]-------------------- > > cifs: fix check of error return from is_path_accessable > > This function will return 0 if everything went ok. > > Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > --- > fs/cifs/connect.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c > index bee397f..9fbe7c5 100644 > --- a/fs/cifs/connect.c > +++ b/fs/cifs/connect.c > @@ -2836,7 +2836,7 @@ remote_path_check: > goto mount_fail_check; > } > rc = is_path_accessible(xid, tcon, cifs_sb, full_path); > - if (rc != -EREMOTE) { > + if (rc != 0 && rc != -EREMOTE) { > kfree(full_path); > goto mount_fail_check; > } ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Kernel oops on 2.6.37-rc3, accessing remote DFS links [not found] ` <20101206070846.1f2c35d4-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> 2010-12-06 12:15 ` [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb Jeff Layton @ 2010-12-06 12:35 ` Robbert Kouprie 1 sibling, 0 replies; 9+ messages in thread From: Robbert Kouprie @ 2010-12-06 12:35 UTC (permalink / raw) To: Jeff Layton; +Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA Hi Jeff, On Mon, 6 Dec 2010, Jeff Layton wrote: > Yeah, it's a bug (obviously). I think I see what the problem is and > will send along a patch in a few minutes. Are you able to reproduce this at > will? Yes, I can reproduce this. I will test your patch right away. Regards, Robbert ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <1291637583-10934-1-git-send-email-jlayton@redhat.com>]
[parent not found: <4D5B8941.8040800@computer.org>]
[parent not found: <4D5B8941.8040800-bdq14YP6qtRg9hUCZPvPmw@public.gmane.org>]
* Re: [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb [not found] ` <4D5B8941.8040800-bdq14YP6qtRg9hUCZPvPmw@public.gmane.org> @ 2011-02-16 12:25 ` Jeff Layton 0 siblings, 0 replies; 9+ messages in thread From: Jeff Layton @ 2011-02-16 12:25 UTC (permalink / raw) To: Darren Williams Cc: smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, robbert-C1IQQP51G3M@public.gmane.org, linux-cifs-u79uwXL29TY76Z2rM5mHXA On Wed, 16 Feb 2011 19:22:25 +1100 Darren Williams <darren.w-bdq14YP6qtRg9hUCZPvPmw@public.gmane.org> wrote: > Hi All > > Robert and Jeff thanks for working on and fixing this, I can confirm > that we now have; > - Remote DFS mounts working, using > - both sec=krb5 and sec=ntlm. > > I'm just looking for clarification on the following feature or bug: > > we have a SAMBA server, samba1, serving a DFS root as follows > > [dfs] > path = /export/samba/dfs > msdfs root = yes > > configured as: > > ls -l /export/samba/dfs > total 8 > lrwxrwxrwx 1 root root 79 2010-03-10 07:53 home -> > msdfs:samba1\dfshome,samba2\dfshome > > and SAMBA servers, samba1 and samba2 with shares: > > [dfshome] > comment = DFS Linux Home Directories > path = /export/home/1/%u > create mask = 0700 > force create mode = 0700 > directory mask = 0700 > force directory mode = 0700 > read only = No > browseable = No > valid users = %U > map acl inherit = yes > > > > If I cifs mount the DFS root using > mount.cifs //samba1/dfs /tmp/dfs -o <options as required> > then list the directory I get the following errors: > > > root@atp-h5gcn1s:~# mount.cifs //samba1/dfs /tmp/dfs/ -o <options> > Password: > root@atp-h5gcn1s:~# ls -l /tmp/dfs/ > ls: cannot read symbolic link /tmp/dfs/home: Object is remote > ls: cannot read symbolic link /tmp/dfs/test-home: Object is remote > ls: cannot read symbolic link /tmp/dfs/projects: Object is remote > total 8 > lrwxrwxrwx 1 root root 79 Mar 10 2010 home > lrwxrwxrwx 1 root root 46 Mar 10 2010 projects > lrwxrwxrwx 1 root root 79 Mar 25 2010 test-home > root@atp-h5gcn1s:~# ls -l /tmp/dfs/home/ > ls: cannot access /tmp/dfs/home/: Not a directory > root@atp-h5gcn1s:~# umount /tmp/dfs > > I then remount and access a file in 'home' directly, which then allows > the directory listing to succeed. > > root@atp-h5gcn1s:~# mount.cifs //samba1/dfs /tmp/dfs/ -o > user=dwilliams,dom=NICTA > Password: > root@atp-h5gcn1s:~# ls -l /tmp/dfs/home/.bashrc > -rw-r--r-- 1 <user> <group> 2450 Jun 8 2008 /tmp/dfs/home/.bashrc > root@atp-h5gcn1s:~# ls /tmp/dfs/ > home projects test-home > root@atp-h5gcn1s:~# ls -l /tmp/dfs/home/ > -rw-r--r-- 1 <user> <group> 3078 Aug 17 2007 2007-08-17-P..... > .... > > also access is OK if you mount 'home' directly via dfs > > root@atp-h5gcn1s:~# mount.cifs //samba1/dfs/home /tmp/dfs/ -o <options> > > I'm looking for clarification on what the correct operation should be > since our Windows clients can access the root the traverse the directory > tree without error, not that this is evidence for correct operation. > I believe that's a bug... The way things like autofs, DFS referrals and NFS used to work is by pretending these mountpoints are symlinks and then abusing the ->follow_link operation on them in the kernel. Not all operations on that inode trigger the follow_link op however, so sometimes -EREMOTE errors bubble up when they shouldn't. Either that or we just have some straightforward bad handling of -EREMOTE errors in the readdir codepath -- I'm not sure yet :) What may be best is to open a bug at bugzilla.samba.org and we'll chase it down when we get a chance. If you do that, please cc me on it. FWIW, I opened this bug a while back which is probably related, but haven't had time to work on it: https://bugzilla.redhat.com/show_bug.cgi?id=616765 This may also be helped by the d_automount patches that dhowells did recently and that are going into 2.6.38, but I haven't had time to look yet. -- Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb @ 2010-12-07 2:07 Jeff Layton 0 siblings, 0 replies; 9+ messages in thread From: Jeff Layton @ 2010-12-07 2:07 UTC (permalink / raw) To: smfrench-Re5JQEeQqe8AvxtiuMwx3w Cc: robbert-C1IQQP51G3M, linux-cifs-u79uwXL29TY76Z2rM5mHXA It's possible that cifs_mount will call cifs_build_path_to_root on a newly instantiated cifs_sb. In that case, it's likely that the master_tlink pointer has not yet been instantiated. Fix this by having cifs_build_path_to_root take a cifsTconInfo pointer as well, and have the caller pass that in. Reported-and-Tested-by: Robbert Kouprie <robbert-C1IQQP51G3M@public.gmane.org> Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- fs/cifs/cifsproto.h | 3 ++- fs/cifs/connect.c | 2 +- fs/cifs/inode.c | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index 5523047..e6d1481 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h @@ -54,7 +54,8 @@ do { \ __func__, curr_xid, (int)rc); \ } while (0) extern char *build_path_from_dentry(struct dentry *); -extern char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb); +extern char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb, + struct cifsTconInfo *tcon); extern char *build_wildcard_path_from_dentry(struct dentry *direntry); extern char *cifs_compose_mount_options(const char *sb_mountdata, const char *fullpath, const struct dfs_info3_param *ref, diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 53f9c31..0a203ec 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -2833,7 +2833,7 @@ remote_path_check: /* check if a whole path (including prepath) is not remote */ if (!rc && cifs_sb->prepathlen && tcon) { /* build_path_to_root works only when we have a valid tcon */ - full_path = cifs_build_path_to_root(cifs_sb); + full_path = cifs_build_path_to_root(cifs_sb, tcon); if (full_path == NULL) { rc = -ENOMEM; goto mount_fail_check; diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index aa48521..589f3e3 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -728,12 +728,12 @@ static const struct inode_operations cifs_ipc_inode_ops = { .lookup = cifs_lookup, }; -char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb) +char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb, + struct cifsTconInfo *tcon) { int pplen = cifs_sb->prepathlen; int dfsplen; char *full_path = NULL; - struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb); /* if no prefix path, simply set path to the root of share to "" */ if (pplen == 0) { @@ -875,7 +875,7 @@ struct inode *cifs_root_iget(struct super_block *sb, unsigned long ino) char *full_path; struct cifsTconInfo *tcon = cifs_sb_master_tcon(cifs_sb); - full_path = cifs_build_path_to_root(cifs_sb); + full_path = cifs_build_path_to_root(cifs_sb, tcon); if (full_path == NULL) return ERR_PTR(-ENOMEM); -- 1.7.3.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-02-16 12:25 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-06 11:58 Kernel oops on 2.6.37-rc3, accessing remote DFS links Robbert Kouprie
[not found] ` <alpine.DEB.2.00.1012061247180.31332-56sTcPfcKMhJlCS1zhbguEjk2N/pv5CcZkel5v8DVj8@public.gmane.org>
2010-12-06 12:08 ` Jeff Layton
[not found] ` <20101206070846.1f2c35d4-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2010-12-06 12:15 ` [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb Jeff Layton
[not found] ` <1291637703-10989-1-git-send-email-jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2010-12-06 19:12 ` Robbert Kouprie
[not found] ` <4CFD35A2.7080407-C1IQQP51G3M@public.gmane.org>
2010-12-06 19:34 ` Jeff Layton
[not found] ` <20101206143423.74d8e236-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2010-12-06 21:39 ` Robbert Kouprie
2010-12-06 12:35 ` Kernel oops on 2.6.37-rc3, accessing remote DFS links Robbert Kouprie
[not found] ` <1291637583-10934-1-git-send-email-jlayton@redhat.com>
[not found] ` <4D5B8941.8040800@computer.org>
[not found] ` <4D5B8941.8040800-bdq14YP6qtRg9hUCZPvPmw@public.gmane.org>
2011-02-16 12:25 ` [PATCH] cifs: allow calling cifs_build_path_to_root on incomplete cifs_sb Jeff Layton
-- strict thread matches above, loose matches on Subject: below --
2010-12-07 2:07 Jeff Layton
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.