fix wrong lock order in posix unlink
Pavel Shilovsky
pshilovsky at samba.org
Thu Jan 17 06:30:47 MST 2013
Hi all,
I tried Samba-4.0.0 and found a error in smb_posix_unlink codepath
that leads to the following backtrace (a part of the level 10 log of
smbd):
check lock order 1 for /var/lib/samba/smbXsrv_open_global.tdb
Lock order violation: Trying /var/lib/samba/smbXsrv_open_global.tdb at
1 while /var/lib/samba/locking.tdb at 1 is locked
lock order: 1:/var/lib/samba/locking.tdb 2:<none> 3:<none>
PANIC (pid 2992): invalid lock_order
BACKTRACE: 27 stack frames:
#0 /usr/lib/libsmbconf.so.0(log_stack_trace+0x29) [0xb716c889]
#1 /usr/lib/libsmbconf.so.0(smb_panic_s3+0x31) [0xb716c991]
#2 /usr/lib/libsamba-util.so.0(smb_panic+0x3a) [0xb76a478a]
#3 /usr/lib/samba/libdbwrap.so(+0x24e1) [0xb6abc4e1]
#4 /usr/lib/samba/libdbwrap.so(+0x265b) [0xb6abc65b]
#5 /usr/lib/samba/libsmbd_base.so(smbXsrv_open_close+0x275) [0xb74c48b5]
#6 /usr/lib/samba/libsmbd_base.so(+0x157d0e) [0xb74c4d0e]
#7 /usr/lib/libtalloc.so.2(_talloc_free+0x778) [0xb6da2308]
#8 /usr/lib/samba/libsmbd_base.so(file_free+0xbc) [0xb741034c]
#9 /usr/lib/samba/libsmbd_base.so(close_file+0xa71) [0xb7472611]
#10 /usr/lib/samba/libsmbd_base.so(smbd_do_setfilepathinfo+0x17ba) [0xb7459d2a]
#11 /usr/lib/samba/libsmbd_base.so(+0xf044f) [0xb745d44f]
#12 /usr/lib/samba/libsmbd_base.so(reply_trans2+0x565) [0xb74601d5]
#13 /usr/lib/samba/libsmbd_base.so(+0x1211d3) [0xb748e1d3]
#14 /usr/lib/samba/libsmbd_base.so(+0x122305) [0xb748f305]
#15 /usr/lib/samba/libsmbd_base.so(+0x122a99) [0xb748fa99]
#16 /usr/lib/libsmbconf.so.0(run_events_poll+0x11c) [0xb71909cc]
#17 /usr/lib/libsmbconf.so.0(+0x40d25) [0xb7190d25]
#18 /usr/lib/libtevent.so.0(_tevent_loop_once+0xa8) [0xb6d94318]
#19 /usr/lib/samba/libsmbd_base.so(smbd_process+0xea7) [0xb7491157]
#20 /usr/sbin/smbd() [0x8051b2f]
#21 /usr/lib/libsmbconf.so.0(run_events_poll+0x358) [0xb7190c08]
#22 /usr/lib/libsmbconf.so.0(+0x40db8) [0xb7190db8]
#23 /usr/lib/libtevent.so.0(_tevent_loop_once+0xa8) [0xb6d94318]
#24 /usr/sbin/smbd(main+0x1846) [0x804d746]
#25 /lib/libc.so.6(__libc_start_main+0xf5) [0xb6c383d5]
#26 /usr/sbin/smbd() [0x804dcd5]
The problem appears on cifs mount with forcemand mount option
(slightly hacked to force cifs client use NtCresateAndX command to
open files) in the following test case:
1) open file,
2) unlink file (appears here!),
3) close file.
I attached the patch that fixes the problem for me.
--
Best regards,
Pavel Shilovsky.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-s3-smbd-fix-wrong-lock-order-in-posix-unlink.patch
Type: application/octet-stream
Size: 1142 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20130117/4cf2b908/attachment.obj>
More information about the samba-technical
mailing list