Re: linux-4.6/net/kcm/kcmsock.c:1508: bad if test ?

From: Cong Wang
Date: Tue May 17 2016 - 12:50:26 EST


On Tue, May 17, 2016 at 9:44 AM, David Miller <davem@xxxxxxxxxxxxx> wrote:
> From: Cong Wang <xiyou.wangcong@xxxxxxxxx>
> Date: Tue, 17 May 2016 09:04:21 -0700
>
>> On Mon, May 16, 2016 at 11:40 AM, David Binderman
>> <linuxdev.baldrick@xxxxxxxxx> wrote:
>>> Hello there,
>>>
>>> linux-4.6/net/kcm/kcmsock.c:1508]: (style) Checking if unsigned
>>> variable 'copied' is less than zero.
>>>
>>> Source code is
>>>
>>> if (copied < 0) {
>>>
>>> but
>>>
>>> size_t copied;
>>>
>>> Suggest code rework.
>>
>> Thanks for the report! I think the following patch is enough:
>>
>> diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
>> index 40662d73..8bfc390 100644
>> --- a/net/kcm/kcmsock.c
>> +++ b/net/kcm/kcmsock.c
>> @@ -1483,7 +1483,7 @@ static ssize_t kcm_splice_read(struct socket
>> *sock, loff_t *ppos,
>> long timeo;
>> struct kcm_rx_msg *rxm;
>> int err = 0;
>> - size_t copied;
>> + int copied;
>
> Or 'ssize_t' since that is the return type of this function.

skb_splice_bits() is still declared as int:

int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int
offset,
...

But yeah, we could change it to ssize_t as well, perhaps in a
separated patch?