[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: |
Fri, 8 Jan 2016 17:40:34 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 |
Firstly, thank you very much for your careful work.
On 2016年01月08日 16:25, Laurent Vivier wrote:
>
>
> Le 08/01/2016 02:59, address@hidden a écrit :
[...]
>> @@ -1692,10 +1693,30 @@ static abi_long do_getsockopt(int sockfd, int level,
>> int optname,
>> switch (optname) {
>> /* These don't just return a single integer */
>> case TARGET_SO_LINGER:
>> - case TARGET_SO_RCVTIMEO:
>> - case TARGET_SO_SNDTIMEO:
>> case TARGET_SO_PEERNAME:
>> goto unimplemented;
>> +
>
> useless blank line
>
OK.
>> + case TARGET_SO_RCVTIMEO:
>> + optname = SO_RCVTIMEO;
>> + goto time_case;
>> + case TARGET_SO_SNDTIMEO:
>> + optname = SO_SNDTIMEO;
>> + time_case:
>
> Something like in "int_case", I think optlen is a pointer, not the length:
>
> if (get_user_u32(len, optlen))
> return -TARGET_EFAULT;
> if (len < 0)
> return -TARGET_EINVAL;
>
OK.
>
>> + 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().
>
OK.
>> + lv = sizeof(tv);
>> + ret = get_errno(getsockopt(sockfd, level, optname, &tv, &lv));
>> + if (ret < 0) {
>> + return ret;
>> + }
>
> if (len > lv)
> len = lv;
>
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;
>
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