[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] linux-user: syscall: Add SO_LINGER for setsocko
From: |
Laurent Vivier |
Subject: |
Re: [Qemu-devel] [PATCH] linux-user: syscall: Add SO_LINGER for setsockopt |
Date: |
Fri, 8 Jan 2016 10:57:24 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 |
Le 08/01/2016 10:45, Chen Gang a écrit :
>
> On 2016年01月08日 16:38, Laurent Vivier wrote:
>>
>>> + if (!lock_user_struct(VERIFY_READ, tlg, optval_addr, 1)) {
>>> + return -TARGET_EFAULT;
>>> + }
>>> + __get_user(lg.l_onoff, &tlg->l_onoff);
>>> + __get_user(lg.l_linger, &tlg->l_linger);
>>> + unlock_user_struct(tlg, optval_addr, 0);
>>
>> You can't unlock the structure you're going to use.
>>
>
> OK, thanks.
>
>
>>> + return get_errno(setsockopt(sockfd, SOL_SOCKET, optname,
>>> + &lg, sizeof(lg)));
>>
>> Why do you use "SOL_SOCKET" instead of "level" ?
>>
>
> At present, level is TARGET_SOL_SOCKET, but we need SOL_SOCKET.
Yes, you're right... so there is a bug in TARGET_SO_BINDTODEVICE which
is using "level" :)
>
>
>>> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
>>> index 9d3c537..5a4d565 100644
>>> --- a/linux-user/syscall_defs.h
>>> +++ b/linux-user/syscall_defs.h
>>> @@ -165,6 +165,11 @@ struct target_ip_mreq_source {
>>> uint32_t imr_sourceaddr;
>>> };
>>>
>>> +struct target_linger {
>>> + int l_onoff; /* Linger active */
>>> + int l_linger; /* How long to linger for */
>>> +};
>>> +
>>
>> Must be "abi_int" to force good alignment for the target.
>>
>
> OK, thanks.
>
>