The patch titled Subject: fs/befs/linuxvfs.c: check superblock before dump operation has been added to the -mm tree. Its filename is fs-befs-linuxvfsc-check-superblock-before-dump-operation.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/fs-befs-linuxvfsc-check-superblock-before-dump-operation.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/fs-befs-linuxvfsc-check-superblock-before-dump-operation.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Fabian Frederick <fabf@xxxxxxxxx> Subject: fs/befs/linuxvfs.c: check superblock before dump operation befs_dump_super_block was called between befs_load_sb and befs_check_sb. It has been reported to crash (5/900) with null block testing. This patch loads, checks and only dump superblock if it's a valid one then brelse bh. (befs_dump_super_block uses disk_sb (bh->b_data) so it seems we need to call it before brelse(bh) but I don't know why befs_check_sb was called after brelse. Another thing I don't understand is why this problem appears now). Signed-off-by: Fabian Frederick <fabf@xxxxxxxxx> Reported-by: Fengguang Wu <fengguang.wu@xxxxxxxxx> Cc: Joe Perches <joe@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/befs/linuxvfs.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff -puN fs/befs/linuxvfs.c~fs-befs-linuxvfsc-check-superblock-before-dump-operation fs/befs/linuxvfs.c --- a/fs/befs/linuxvfs.c~fs-befs-linuxvfsc-check-superblock-before-dump-operation +++ a/fs/befs/linuxvfs.c @@ -834,16 +834,14 @@ befs_fill_super(struct super_block *sb, (befs_super_block *) ((void *) bh->b_data + x86_sb_off); } - if (befs_load_sb(sb, disk_sb) != BEFS_OK) + if ((befs_load_sb(sb, disk_sb) != BEFS_OK) || + (befs_check_sb(sb) != BEFS_OK)) goto unacquire_bh; befs_dump_super_block(sb, disk_sb); brelse(bh); - if (befs_check_sb(sb) != BEFS_OK) - goto unacquire_priv_sbp; - if( befs_sb->num_blocks > ~((sector_t)0) ) { befs_error(sb, "blocks count: %llu " "is larger than the host can use", _ Patches currently in -mm which might be from fabf@xxxxxxxxx are kernel-auditfilterc-replace-countsize-kmalloc-by-kcalloc.patch fs-cifs-remove-obsolete-__constant.patch fs-cifs-filec-replace-countsize-kzalloc-by-kcalloc.patch fs-cifs-smb2filec-replace-countsize-kzalloc-by-kcalloc.patch fs-fscache-make-ctl_table-static.patch fs-logfs-readwritec-kernel-doc-warning-fixes.patch ntfs-kernel-doc-warning-fixes.patch arch-sh-mm-asids-debugfsc-use-ptr_err_or_zero.patch arch-sh-kernel-timec-use-ptr_err_or_zero.patch fs-squashfs-file_directc-replace-countsize-kmalloc-by-kmalloc_array.patch fs-squashfs-superc-logging-clean-up.patch fs-ext4-fsyncc-generic_file_fsync-call-based-on-barrier-flag.patch fs-ocfs2-slot_mapc-replace-countsize-kzalloc-by-kcalloc.patch kernel-watchdogc-convert-printk-pr_warning-to-pr_foo.patch mm-slabc-add-__init-to-init_lock_keys.patch mm-readaheadc-remove-unused-file_ra_state-from-count_history_pages.patch mm-memory_hotplugc-add-__meminit-to-grow_zone_span-grow_pgdat_span.patch mm-page_alloc-add-__meminit-to-alloc_pages_exact_nid.patch mm-page_allocc-unexport-alloc_pages_exact_nid.patch include-linux-memblockh-add-__init-to-memblock_set_bottom_up.patch mm-internalh-use-nth_page.patch mm-hwpoison-injectc-remove-unnecessary-null-test-before-debugfs_remove_recursive.patch mm-zswapc-add-__init-to-zswap_entry_cache_destroy.patch lib-test-kstrtoxc-use-array_size-instead-of-sizeof-sizeof.patch fs-compatc-remove-unnecessary-test-on-unsigned-value.patch checkpatch-emit-fewer-kmalloc_array-kcalloc-conversion-warnings.patch fs-efs-nameic-return-is-not-a-function.patch fs-ramfs-file-nommuc-replace-countsize-kzalloc-by-kcalloc.patch kernel-test_kprobesc-use-current-logging-functions.patch fs-befs-linuxvfsc-check-superblock-before-dump-operation.patch fs-isofs-logging-clean-up.patch fs-isofs-logging-clean-up-fix.patch fs-coda-use-linux-uaccessh.patch fs-nilfs2-superc-remove-unnecessary-test-on-unsigned-value.patch fs-ufs-convert-printk-to-pr_foo.patch fs-ufs-use-pr_fmt.patch fs-ufs-superc-use-__func__-in-logging.patch fs-ufs-superc-use-va_format-instead-of-buffer-vsnprintf.patch fs-ufs-convert-ufsd-printk-to-pr_debug.patch fs-ufs-inodec-kernel-doc-warning-fixes.patch fs-reiserfs-replace-not-standard-%lu-%ld.patch fs-reiserfs-use-linux-uaccessh.patch fs-reiserfs-xattrc-fix-blank-line-missing-after-declarations.patch fs-hpfs-dnodec-fix-suspect-code-indent.patch fs-proc-kcorec-use-page_align-instead-of-alignpage_size.patch proc-constify-seq_operations.patch fs-exofs-ore_raidc-replace-countsize-kzalloc-by-kcalloc.patch kernel-gcov-fsc-remove-unnecessary-null-test-before-debugfs_remove.patch fs-adfs-dir_fplusc-use-array_size-instead-of-sizeof-sizeof.patch fs-adfs-dir_fplusc-replace-countsize-kzalloc-by-kcalloc.patch fs-bfs-use-bfs-prefix-for-dump_imap.patch drivers-parport-parport_ip32c-use-ptr_err_or_zero.patch fs-pstore-ram_corec-replace-countsize-kmalloc-by-kmalloc_array.patch fs-cachefiles-daemonc-remove-unnecessary-tests-on-unsigned-values.patch fs-cachefiles-bindc-remove-unnecessary-assertions.patch fs-omfs-inodec-replace-countsize-kzalloc-by-kcalloc.patch fs-cramfs-convert-printk-to-pr_foo.patch fs-cramfs-use-pr_fmt.patch fs-cramfs-code-clean-up.patch fs-cramfs-inodec-use-linux-uaccessh.patch fs-romfs-superc-convert-printk-to-pr_foo.patch fs-romfs-superc-use-pr_fmt-in-logging.patch fs-romfs-superc-add-blank-line-after-declarations.patch fs-qnx6-convert-printk-to-pr_foo.patch fs-qnx6-use-pr_fmt-and-__func__-in-logging.patch fs-qnx6-update-debugging-to-current-functions.patch scripts-coccinelle-free-add-null-test-before-freeing-functions.patch scripts-coccinelle-free-ifnullfreecocci-add-copyright-information.patch fs-dlm-debug_fsc-remove-unnecessary-null-test-before-debugfs_remove.patch linux-next.patch init-mainc-code-clean-up.patch kernel-posix-timersc-code-clean-up.patch kernel-posix-timersc-code-clean-up-checkpatch-fixes.patch kernel-kprobesc-convert-printk-to-pr_foo.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html