Delete a directory, crash the system

David Noel david.i.noel at gmail.com
Sat Jul 27 19:38:22 UTC 2013


> I was going to raise an issue when the discussion had died down to a
> concensus. I also don't think it's reasonable for the kernel to bomb
> when it encounters corruption on a disk.
>
> If you want to patch it yourself, edit sys/ufs/ufs/ufs_vnops.c at around
> line 2791 change:
>
>          if (dp->i_effnlink < 3)
>                  panic("ufs_dirrem: Bad link count %d on parent",
>                      dp->i_effnlink);
>
> To
>
>          if (dp->i_effnlink < 3) {
>                  error = EINVAL;
>                  goto out;
>          }
>
> The ufs_link() call has a similar issue.
>
> I can't see why my mod will break anything, but there's always
> unintended consequences. By returning invalid argument, any code above
> it should already be handling that condition although the user will be
> scratching their head wondering what's wrong with it. Returning ENOENT
> or EACCES or ENOTDIR may be better ("No such directory", "Access denied"
> or "Not a valid directory").
>
> The trouble is that it's tricky to test properly without finding a good
> way to corrupt the link count :-)
>
> Regards, Frank.

Cool. Thanks for the patch!


More information about the freebsd-questions mailing list