[linux-cifs-client] OOPS (then hang) in cifs client during rename

Alan Tyson atyson at hp.com
Thu Mar 30 19:03:45 GMT 2006


Hi,

I have been working with one of our customers who is planning on using 
cifs clients in their network.  As part of their stress testing, they 
have hit a problem in the cifs module when multiple clients are moving 
files from one directory on the server to another one.  Both directories 
are under the same mount point and the problem (sometimes) happens when 
two clients try to perform the same move at the same time (not a 
particularly smart thing to do, but serves it's purpose here).

The symptoms of the problem are an OOPS caused by an attempt at a null 
pointer dereference followed by client hangs.

Our customer is using SLES9 SP3 which has the 1.33 version of the cifs 
client.  I can also duplicate the problem using Fedora Core 5 which has 
the 1.40 version of the client and, whilst I've not specifically tested 
it, I feel that the problem is still there in the latest version.

I believe that I have identifed the root cause of the problem.  I'm not 
too sure about the ettiqiette of what I should post here and what I 
should put into a bugzilla describing what I've found, so some guidance 
in this area would be appreciated.

For the curious, the oops is (trying to keep it brief):
Unable to handle kernel NULL pointer dereference at virtual address 0000002c

crash> bt
PID: 15948  TASK: dee72000  CPU: 1   COMMAND: "mv"
 #0 [d92d7cb0] schedule at c012642a
 #1 [d92d7d38] SendReceive at e0d4ab8c
 #2 [d92d7da8] error_code at c010a27b
    EAX: 00000000  EBX: d9ec13c0  ECX: df6da638  EDX: d97f0b80  EBP: 
0002073a
    DS:  007b      ESI: d9265968  ES:  007b      EDI: 00000000
    CS:  0060      EIP: e0d3a7c3  ERR: ffffffff  EFLAGS: 00010246
 #3 [d92d7de4] cifs_unlink at e0d3a7c3
 #4 [d92d7e44] cifs_rename at e0d3acf7
 #5 [d92d7ea0] vfs_rename_other at c0183821
 #6 [d92d7ec0] vfs_rename at c0184ca2
 #7 [d92d7edc] sys_rename at c0186e91
 #8 [d92d7fc0] sysenter_entry at c01091d2

and I believe that the fix would be to make the call to cifs_unlink from 
cifs_rename conditional upon dentry->d_inode being not NULL, but can 
post more information here or in a bugzilla, as you suggest.

Many thanks,

Alan Tyson,
Global Solutions Engineering,
Hewlett Packard.


More information about the linux-cifs-client mailing list