qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Add SO_RCVTIMEO and SO_SN


From: Chen Gang
Subject: Re: [Qemu-devel] [PATCH] linux-user/syscall.c: Add SO_RCVTIMEO and SO_SNDTIMEO for getsockopt
Date: Mon, 11 Jan 2016 14:31:59 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0

Oh, sorry, after check again, I guess, we need continue to discuss.

On 2016年01月08日 17:40, Chen Gang wrote:
> 
> On 2016年01月08日 16:25, Laurent Vivier wrote:
>>
>>> +            if (optlen < sizeof(struct target_timeval)) {
>>> +                return -TARGET_EINVAL;
>>> +            }
>>
>> You don't have to check the len (kernel doesn't), EINVAL is not listed
>> in the getsockopt() error cases, it should be an EFAULT, and this will
>> be managed by copy_to_user_timeval().
>>
 

After "man getsockopt", there is EINVAL in its error cases.

> OK.
> 
>>> +            lv = sizeof(tv);
>>> +            ret = get_errno(getsockopt(sockfd, level, optname, &tv, &lv));
>>> +            if (ret < 0) {
>>> +                return ret;
>>> +            }
>>
>>  if (len > lv)
>>     len = lv;
>>

For me, len is for target, lv is for host, they cann't be compared with
each other.

> 
> OK.
> 
>>> +            if (copy_to_user_timeval(optval_addr, &tv)) {
>>> +                return -TARGET_EFAULT;
>>> +            }
>>> +            if (put_user_u32(sizeof(struct target_timeval), optlen)) {
>>> +                return -TARGET_EFAULT;
>>> +            }
>>
>>         if (put_user_u32(len, optlen))
>>             return -TARGET_EFAULT;
>>

For me, we still need put sizeof(struct target_timeval) to optlen, since
the host lengh should be sizeof(struct timeval).

> 
> OK. I shall send patch v2 for it, in the next week.
> 
> 

Thanks.
-- 
Chen Gang (陈刚)

Open, share, and attitude like air, water, and life which God blessed



reply via email to

[Prev in Thread] Current Thread [Next in Thread]