[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