Re: [PATCH] kernel/groups.c: consider about NULL for 'group_info' in all related extern functions

Chen Gang
2013-09-27T01:31:19Z

On 09/26/2013 09:15 PM, Tejun Heo wrote:
> Hello, Chen.
>
> On Thu, Sep 26, 2013 at 02:30:31PM +0800, Chen Gang wrote:
>>> Oh, not cause issue, the reason is "'groups' exports extern variable
>>> 'init_groups', when start process, default 'cred' will set it to be
>>> sure of groups always be initialized".
>>>
>>> Hmm... but after all, I still think this file need be improved: "remove
>>> the group_info checking in groups_search()", please help check, thanks.
>
> Given the track record upto this point and how marginal the benefit of
> the suggested change is, I'd rather not. It's quite possible that we
> had specific issue where that extra conditional is necessary and I
> don't feel comfortable trusting your evaluation and analysis on the
> subject at the moment, so the benefit / risk ratio seems way off from
> my pov.
>
>>> If groups_alloc() fails, the caller must not call any related API again
>>> with the related invalid 'group_info'.
>>>
>>>
>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>
> Nacked-by: Tejun Heo <tj@kernel.org>
>

The caller should not 'generate' a new 'groups_info' by itself, so, if
invalid 'groups_info' should not pass to groups_free(), of cause it
should not pass groups_search(), either.

If permit passing an invalid 'groups_info' to groups_search(), caller
also can pass this invalid 'groups_info' to groups_free(), too.

The original author exported extern variable 'init_groups', that means
'groups' wants no duty to be sure 'group_info' whether valid, caller
should be sure of that (or it is caller's bug, not 'groups' bug).

In my opinion, it is enough to know 'groups' interface is inconsistent,
it needs improvement (in fact, I don't think it's a good idea to export
'init_groups', neither good to let caller sure of 'group_info' valid).

As an integrator or large source code maintainer, we cannot only depend
on testing, or tracing log, or some short directly causes; we also need
find and solve issues by checking sub-systems' interface or documents.

> Thanks.
>

Thanks.
--
Chen Gang