The fundamental problem stems from line 254 in util-linux-2.17.2/mount/umount.c where, when busy, it has this step:
remnt.mnt_type = remnt.mnt_fsname = NULL;
Then it calls update_mtab(node, &remnt) 4 lines below this when nomtab is zero, leading to the null pointer manipulation that ultimately kills the process.
My question is why are the mnt_type and mnt_fsname being cleared but not set to a sensible value? Neither are mnt_freq or mnt_passno for that matter, suggesting that using memset() to clear the remnt structure would be smarter, followed by assigning the sensible value to the type & name.
The fundamental problem stems from line 254 in util-linux- 2.17.2/ mount/umount. c where, when busy, it has this step:
remnt.mnt_type = remnt.mnt_fsname = NULL;
Then it calls update_mtab(node, &remnt) 4 lines below this when nomtab is zero, leading to the null pointer manipulation that ultimately kills the process.
My question is why are the mnt_type and mnt_fsname being cleared but not set to a sensible value? Neither are mnt_freq or mnt_passno for that matter, suggesting that using memset() to clear the remnt structure would be smarter, followed by assigning the sensible value to the type & name.