Re: [PATCH 04/26] sysfs: sysfs_remove_dir stop checking for bogus cases.

Eric W. Biederman
2009-06-04T00:41:37Z

Greg KH <greg@kroah.com> writes:

> On Fri, May 29, 2009 at 01:19:14PM -0700, Eric W. Biederman wrote:
>> From: Eric W. Biederman <ebiederm@xmission.com>
>>
>> kobj->sd can not be NULL in sysfs_remove_dir.
>>
>> sysfs_remove_dir is only called from kobject_add (to clean up after failure)
>> and from kobject_del at the end of a kobject's life. In both cases kobject_add
>> has already called sysfs_create_dir successfully. The only writers of
>> kobj->sd are sysfs_create_dir on sucess and sysfs_remove_dir when it clears
>> the kobj just before deleting the directory.
>>
>> Which means at the time sysfs_remove_dir is called kobj->sd will be
>> valid.
>
> Yeah, we would hope so.
>
> But as we have been forced to add many checks like this into the driver
> core to handle those "no one could ever call this" type problems that
> have been springing up over time, I am hesitant to remove this check.
>
> Why do you want to remove it, what is the problem here you are trying to
> solve?

I'm cleaning up and simplifying the code.

In this particular instance the check is actually wrong. There is no
valid code path that depends on that behavior. Which means the test
is both useless and actively obscures the code.

Making it a BUG_ON would be valid.

The other side of it is I realized I had been running for months without
that check. I had deleted it as an oversight. Then when the code churn
was small enough and Tejun asked me about it. I split this hunk out
into it's own separate patch. As I figured it deserved it's own patch
so the change could stand out and be reviewed. Since my review of the code
path showed no valid use case I kept it.

Eric