From 3ca0fe32be91707f52f7abdd317737772d2ff203 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Fri, 28 May 2010 19:06:15 -0400 Subject: mqueue doesn't need make_bad_inode() It never hashes them anyway and does final iput() immediately afterwards. With ->drop_inode() being generic_delete_inode()... Signed-off-by: Al Viro --- ipc/mqueue.c | 1 - 1 file changed, 1 deletion(-) diff --git a/ipc/mqueue.c b/ipc/mqueue.c index 5108232f93d4..c93fd3faac2d 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c @@ -176,7 +176,6 @@ static struct inode *mqueue_get_inode(struct super_block *sb, } return inode; out_inode: - make_bad_inode(inode); iput(inode); return NULL; } -- cgit v1.2.3 From dfb3856befc852898571b7591130aff37d87434c Mon Sep 17 00:00:00 2001 From: Al Viro Date: Fri, 28 May 2010 21:32:44 -0400 Subject: fix the deadlock in qib_fs get_sb_single() calls fill_super with superblock locked; calling deactivate_super() will deadlock immedately. Moreover, if fill_super callback returns an error, get_sb_single() will release the reference to superblock itself just fine. Signed-off-by: Al Viro --- drivers/infiniband/hw/qib/qib_fs.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c index edef8527eb34..844954bf417b 100644 --- a/drivers/infiniband/hw/qib/qib_fs.c +++ b/drivers/infiniband/hw/qib/qib_fs.c @@ -542,10 +542,8 @@ static int qibfs_fill_super(struct super_block *sb, void *data, int silent) list_for_each_entry_safe(dd, tmp, &qib_dev_list, list) { spin_unlock_irqrestore(&qib_devs_lock, flags); ret = add_cntr_files(sb, dd); - if (ret) { - deactivate_super(sb); + if (ret) goto bail; - } spin_lock_irqsave(&qib_devs_lock, flags); } -- cgit v1.2.3