Delete a directory, crash the system

Frank Leonhardt frank2 at fjl.co.uk
Sat Jul 27 19:43:26 UTC 2013


On 27/07/2013 20:38, David Noel wrote:
>> 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!
>
Sorry - forgot to mention that you use it entirely at your own risk!




More information about the freebsd-questions mailing list