소스 검색

jbd2: deregister proc on failure in jbd2_journal_init_inode

jbd2_journal_init_inode() does not call jbd2_stats_proc_exit() on all
failure paths after calling jbd2_stats_proc_init(). This leaves
dangling references to the fs in proc.

This patch fixes a bug reported by Sami Leides at:
http://bugzilla.kernel.org/show_bug.cgi?id=11493

Signed-off-by: Sami Liedes <sliedes@cc.hut.fi>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Sami Liedes 16 년 전
부모
커밋
2423840ded
1개의 변경된 파일2개의 추가작업 그리고 0개의 파일을 삭제
  1. 2 0
      fs/jbd2/journal.c

+ 2 - 0
fs/jbd2/journal.c

@@ -1089,6 +1089,7 @@ journal_t * jbd2_journal_init_inode (struct inode *inode)
 	if (!journal->j_wbuf) {
 	if (!journal->j_wbuf) {
 		printk(KERN_ERR "%s: Cant allocate bhs for commit thread\n",
 		printk(KERN_ERR "%s: Cant allocate bhs for commit thread\n",
 			__func__);
 			__func__);
+		jbd2_stats_proc_exit(journal);
 		kfree(journal);
 		kfree(journal);
 		return NULL;
 		return NULL;
 	}
 	}
@@ -1098,6 +1099,7 @@ journal_t * jbd2_journal_init_inode (struct inode *inode)
 	if (err) {
 	if (err) {
 		printk(KERN_ERR "%s: Cannnot locate journal superblock\n",
 		printk(KERN_ERR "%s: Cannnot locate journal superblock\n",
 		       __func__);
 		       __func__);
+		jbd2_stats_proc_exit(journal);
 		kfree(journal);
 		kfree(journal);
 		return NULL;
 		return NULL;
 	}
 	}