]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.fixes/ocfs2-fix-check-for-osb-in-kill_sb.patch
Fix oinkmaster patch.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.fixes / ocfs2-fix-check-for-osb-in-kill_sb.patch
CommitLineData
82094b55
AF
1Subject: Check for existence of osb in kill_sb
2Reference: bnc#552602
3From: Goldwyn Rodrigues <rgoldwyn@novell.com>
4
5In case of an error while mounting, for example - slots full, the volume
6dismounts and calls kill_sb. However, osb is not initialized as yet,
7and results in a NULL pointer dereference. Check if osb is initialized
8before operating on it.
9
10Signed-off-by: Goldwyn Rodrigues <rgoldwyn@novell.com>
11Signed-off-by: Coly Li <coly.li@suse.de>
12---
13 ocfs2/super.c | 13 +++++++------
14 1 file changed, 7 insertions(+), 6 deletions(-)
15
16Index: fs/ocfs2/super.c
17===================================================================
18--- a/fs/ocfs2/super.c 2009-11-05 00:59:58.000000000 +0100
19+++ b/fs/ocfs2/super.c 2009-11-05 17:49:51.000000000 +0100
20@@ -1019,12 +1019,13 @@ static void ocfs2_kill_sb(struct super_b
21 struct ocfs2_super *osb = OCFS2_SB(sb);
22
23 /* Prevent further queueing of inode drop events */
24- spin_lock(&dentry_list_lock);
25- ocfs2_set_osb_flag(osb, OCFS2_OSB_DROP_DENTRY_LOCK_IMMED);
26- spin_unlock(&dentry_list_lock);
27- /* Wait for work to finish and/or remove it */
28- cancel_work_sync(&osb->dentry_lock_work);
29-
30+ if (osb) {
31+ spin_lock(&dentry_list_lock);
32+ ocfs2_set_osb_flag(osb, OCFS2_OSB_DROP_DENTRY_LOCK_IMMED);
33+ spin_unlock(&dentry_list_lock);
34+ /* Wait for work to finish and/or remove it */
35+ cancel_work_sync(&osb->dentry_lock_work);
36+ }
37 kill_block_super(sb);
38 }
39