[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4] linux-user: syscall: ioctls: support DRM_IOCTL_VERSION
From: |
Chen Gang |
Subject: |
Re: [PATCH v4] linux-user: syscall: ioctls: support DRM_IOCTL_VERSION |
Date: |
Tue, 2 Jun 2020 22:19:40 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 |
On 2020/6/2 下午9:40, Laurent Vivier wrote:
>> +static inline abi_long target_to_host_drmversion(struct drm_version
>> *host_ver,
>> + abi_long target_addr)
>> +{
>> + struct target_drm_version *target_ver;
>> +
>> + if (!lock_user_struct(VERIFY_READ, target_ver, target_addr, 0)) {
>> + return -TARGET_EFAULT;
>> + }
>> + __get_user(host_ver->name_len, &target_ver->name_len);
>> + host_ver->name = host_ver->name_len ? g2h(target_ver->name) : NULL;
>> + __get_user(host_ver->date_len, &target_ver->date_len);
>> + host_ver->date = host_ver->date_len ? g2h(target_ver->date) : NULL;
>> + __get_user(host_ver->desc_len, &target_ver->desc_len);
>> + host_ver->desc = host_ver->desc_len ? g2h(target_ver->desc) : NULL;
>
> but I think the string buffers must be locked and access rights must be
> checked.
>
> So I think you should have something like:
>
> host_ver->name = lock_user(VERIFY_WRITE, target_ver->name,
> target_ver->name_len, 0);
> ...
>
OK, thanks.
>> + unlock_user_struct(target_ver, target_addr, 0);
>> + return 0;
>> +}
>> +
>> +static inline abi_long host_to_target_drmversion(abi_ulong target_addr,
>> + struct drm_version
>> *host_ver)
>> +{
>> + struct target_drm_version *target_ver;
>> +
>> + if (!lock_user_struct(VERIFY_WRITE, target_ver, target_addr, 0)) {
>> + return -TARGET_EFAULT;
>> + }
>> + __put_user(host_ver->version_major, &target_ver->version_major);
>> + __put_user(host_ver->version_minor, &target_ver->version_minor);
>> + __put_user(host_ver->version_patchlevel,
>> &target_ver->version_patchlevel);
>> + __put_user(host_ver->name_len, &target_ver->name_len);
>
> unlock_user(host_ver->name, target_ver->name, host_ver->name_len);
> ...
>
OK, thanks.
I'll send patch v5.