Re: [PATCH] genetlink: fix unsigned int comparison with less than zero

From: Cong Wang
Date: Sun Nov 13 2016 - 00:25:33 EST


On Sat, Nov 12, 2016 at 1:37 PM, Johannes Berg
<johannes@xxxxxxxxxxxxxxxx> wrote:
> On Thu, 2016-11-10 at 09:11 -0800, Cong Wang wrote:
>> On Thu, Nov 10, 2016 at 7:57 AM, Colin King <colin.king@xxxxxxxxxxxxx
>> > wrote:
>> >
>> > From: Colin Ian King <colin.king@xxxxxxxxxxxxx>
>> >
>> > family->id is unsigned, so the less than zero check for
>> > failure return from idr_alloc is never true and so the error exit
>> > is never handled. Instead, assign err and check if this is less
>> > than zero since this is a signed integer.
>>
>> Why family->id can't be just signed int? For me it should be.
>
> I suppose it could be, since family IDs are allocated in a 16-bit range
> anyway. But family IDs can also never actually be negative, so having
> an unsigned int in the struct makes sense too.

All idr_* API's accept int, rather than unsigned int. This is my point.