Fixed a NULL pointer dereference bug in zfs_preumount
When zpl_fill_super -> zfs_domount fails (e.g. because the dataset was destroyed before it could be successfully mounted) the subsequent call to zpl_kill_sb -> zfs_preumount would derefence a NULL pointer. This bug can be reproduced using this shell script: #!/bin/sh ( while true; do zfs create -o mountpoint=legacz tank/bar zfs destroy tank/bar done ) & ( while true; do mount -t zfs tank/bar /mnt umount /mnt done ) & Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #639
This commit is contained in:
parent
2ce9d0ec61
commit
1f0d8a566f
|
@ -1231,7 +1231,7 @@ zfs_preumount(struct super_block *sb)
|
|||
{
|
||||
zfs_sb_t *zsb = sb->s_fs_info;
|
||||
|
||||
if (zsb->z_ctldir != NULL)
|
||||
if (zsb != NULL && zsb->z_ctldir != NULL)
|
||||
zfsctl_destroy(zsb);
|
||||
}
|
||||
EXPORT_SYMBOL(zfs_preumount);
|
||||
|
|
Loading…
Reference in New Issue