On Tue, Nov 11, 2014 at 11:44:26PM +0200, Giedrius Statkevicius wrote: > On 2014.11.11 23:05, Greg KH wrote: > > > > If you revert this patch, does things go back to "normal" for you? > > Originally I've only tested where the HEAD was > 32eca22180804f71b06b63fd29b72f58be8b3c47 versus > 32eca22180804f71b06b63fd29b72f58be8b3c47~1 but now I recompiled and > tested a vanilla 3.18.0-rc4-next-20141111 on which this issue occurs and > then tried a version with that particular patch reverted and then no > lockups happen. I've run into this same issue with sshfs: [ 49.231095] BUG: spinlock bad magic on CPU#1, sshfs/180 [ 49.239078] lock: fuse_miscdevice+0x0/0x24, .magic: c09ce64c, .owner: /0, .owner_cpu: -1065526976 [ 49.248551] CPU: 1 PID: 180 Comm: sshfs Not tainted 3.18.0-rc4-next-20141111-00275-g3eeaa958e58c-dirty #2654 [ 49.258443] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 49.266269] [] (show_stack) from [] (dump_stack+0x98/0xd8) [ 49.273618] [] (dump_stack) from [] (do_raw_spin_lock+0x1a4/0x1a8) [ 49.281621] [] (do_raw_spin_lock) from [] (fuse_dev_release+0x1c/0x68) [ 49.289900] [] (fuse_dev_release) from [] (__fput+0x80/0x1c8) [ 49.297470] [] (__fput) from [] (task_work_run+0xb4/0xec) [ 49.304700] [] (task_work_run) from [] (do_work_pending+0xa0/0xc0) [ 49.312712] [] (do_work_pending) from [] (work_pending+0xc/0x20) [ 49.701449] BUG: spinlock lockup suspected on CPU#1, sshfs/180 [ 49.707327] lock: fuse_miscdevice+0x0/0x24, .magic: c09ce64c, .owner: /0, .owner_cpu: -1065526976 [ 49.716341] CPU: 1 PID: 180 Comm: sshfs Not tainted 3.18.0-rc4-next-20141111-00275-g3eeaa958e58c-dirty #2654 [ 49.726238] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 49.734051] [] (show_stack) from [] (dump_stack+0x98/0xd8) [ 49.741293] [] (dump_stack) from [] (do_raw_spin_lock+0xfc/0x1a8) [ 49.749178] [] (do_raw_spin_lock) from [] (fuse_dev_release+0x1c/0x68) [ 49.757508] [] (fuse_dev_release) from [] (__fput+0x80/0x1c8) [ 49.765058] [] (__fput) from [] (task_work_run+0xb4/0xec) [ 49.772264] [] (task_work_run) from [] (do_work_pending+0xa0/0xc0) [ 49.780197] [] (do_work_pending) from [] (work_pending+0xc/0x20) Reverting 32eca2218080 ("misc: always assign miscdevice to file-> private_data in open()") fixes the issue for me. Looking at the stacktrace and correlating to the code, what happens is that fuse_fill_super() checks that file->private_data hasn't been set yet and errors out otherwise. Clearly this is what the misc_open() change in the above commit triggers. The BUG ensuing from that comes from the fact that the error cleanup path assumes that if file->private_data is set, it will be a struct fuse_conn *, so it's not a surprise that fuse_dev_release() will fail as above. The root of the issue is that the assumption in the above commit, that drivers will always overwrite ->private_data, isn't true at least in case of FUSE. Thierry