Module refcounting in fs/proc/inode.c

Doug Ledford (dledford@redhat.com)
Sun, 17 Nov 2002 19:08:16 -0500


--wac7ysb48OaltWcw
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

This patch should make module ref counting safe in the proc filesystem.
Without it, accessing /proc/scsi/aic7xxx/0 renders the aic7xxx module
unloadable. However, I assume that we can call put_de() on the de we have
at the time that the module ref inc attempt might fail. If that's not
right, then someone who knows de ops will have to correct this patch.

-- 
  Doug Ledford <dledford@redhat.com>     919-754-3700 x44233
         Red Hat, Inc. 
         1801 Varsity Dr.
         Raleigh, NC 27606
  

--wac7ysb48OaltWcw Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="proc-inode.patch"

===== fs/proc/inode.c 1.17 vs edited ===== --- 1.17/fs/proc/inode.c Sat Sep 28 11:36:29 2002 +++ edited/fs/proc/inode.c Sun Nov 17 18:22:38 2002 @@ -73,7 +73,7 @@ de = PROC_I(inode)->pde; if (de) { if (de->owner) - __MOD_DEC_USE_COUNT(de->owner); + module_put(de->owner); de_put(de); } } @@ -201,7 +201,8 @@ if (de->nlink) inode->i_nlink = de->nlink; if (de->owner) - __MOD_INC_USE_COUNT(de->owner); + if(!try_module_get(de->owner)) + goto out_fail; if (de->proc_iops) inode->i_op = de->proc_iops; if (de->proc_fops)

--wac7ysb48OaltWcw-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/