remove BKL from ieee1394_core release function
PATCH 1/1 remove BKL from ieee1394_core release function
I produced a similar patch for 2.5 which I discussed on the ieee1394 mailing list a few weeks ago. We decided that this was a safe and BKL-free approach. Here is a patch to do the same thing for 2.4.19-pre6.
Please forward on to Marcello.
Signature · 2 lines
Dave Hansen [email protected]
drivers/ieee1394/ieee1394_core.c +5 -12
@@ -906,17 +906,16 @@/* printk("ieee1394_dispatch_open(%d)", blocknum); */ -/* lock the whole kernel here, to prevent a driver from -being unloaded between the file_ops lookup and the open */ - -lock_kernel (); -read_lock (&ieee1394_chardevs_lock); - file_ops = ieee1394_chardevs[blocknum].file_ops; module = ieee1394_chardevs[blocknum].module; +/* bump the reference count of the driver that +will receive the open() */ +INCREF (module); + file_ops = ieee1394_chardevs[blocknum].file_ops;read_unlock (&ieee1394_chardevs_lock);if (file_ops ==NULL ) { +DECREF (module); goto out_fail; }
@@ -924,10 +923,6 @@own file_operations */ file->f_op = file_ops; -/* bump the reference count of the driver that -will receive the open() */ -INCREF (module); -/* at this point BOTH ieee1394 and the task-specific driver have an extra reference */
@@ -956,7 +951,6 @@and will be dropped by the VFS when the file is released. */ -unlock_kernel ();return 0 ; }
@@ -966,7 +960,6 @@function returns. */ file->f_op = &ieee1394_chardev_ops; -unlock_kernel ();return retval;#undef INCREF
Quoted 3 lines · Dave Hansen
I produced a similar patch for 2.5 which I discussed on the ieee1394 mailing list a few weeks ago. We decided that this was a safe and BKL-free approach. Here is a patch to do the same thing for 2.4.19-pre6.
Just let me put this into the linux1394 repo, and I'll forward the patch to Marcello and Linus. Keeps me from having to track 3 sets of changes.
Signature · 3 lines
Debian - http://www.debian.org/ Linux 1394 - http://linux1394.sourceforge.net/ Subversion - http://subversion.tigris.org/