mbox series

[0/4] linux-user: Fix getdents alignment issues (#704)

Message ID 20211107124845.1174791-1-richard.henderson@linaro.org
Headers show
Series linux-user: Fix getdents alignment issues (#704) | expand

Message

Richard Henderson Nov. 7, 2021, 12:48 p.m. UTC
There are a number of alignement issues flagged up by clang,
this attempts to fix only one of them: getdents.

r~

Richard Henderson (4):
  linux-user: Split out do_getdents, do_getdents64
  linux-user: Always use flexible arrays for dirent d_name
  linux-user: Fix member types of target_dirent64
  linux-user: Rewrite do_getdents, do_getdents64

 linux-user/syscall_defs.h |  12 +-
 linux-user/syscall.c      | 290 ++++++++++++++++++--------------------
 2 files changed, 141 insertions(+), 161 deletions(-)

Comments

Warner Losh Nov. 9, 2021, 4:46 p.m. UTC | #1
> On Nov 7, 2021, at 5:48 AM, Richard Henderson <richard.henderson@linaro.org> wrote:
> 
> There are a number of alignement issues flagged up by clang,
> this attempts to fix only one of them: getdents.

Does it make sense to have size asserts for these types? That would catch the alignment issues and are cheap to maintain since ABI sizes should never change…

Warner

> r~
> 
> Richard Henderson (4):
>  linux-user: Split out do_getdents, do_getdents64
>  linux-user: Always use flexible arrays for dirent d_name
>  linux-user: Fix member types of target_dirent64
>  linux-user: Rewrite do_getdents, do_getdents64
> 
> linux-user/syscall_defs.h |  12 +-
> linux-user/syscall.c      | 290 ++++++++++++++++++--------------------
> 2 files changed, 141 insertions(+), 161 deletions(-)
> 
> -- 
> 2.25.1
> 
>
Richard Henderson Nov. 10, 2021, 9:27 a.m. UTC | #2
On 11/9/21 5:46 PM, Warner Losh wrote:
> 
> 
>> On Nov 7, 2021, at 5:48 AM, Richard Henderson <richard.henderson@linaro.org> wrote:
>>
>> There are a number of alignement issues flagged up by clang,
>> this attempts to fix only one of them: getdents.
> 
> Does it make sense to have size asserts for these types? That would catch the alignment issues and are cheap to maintain since ABI sizes should never change…

Well, the size of getdents64 doesn't change; it merely lands at a different memory offset. 
  But we've now told the compiler about it.


r~
Laurent Vivier Nov. 10, 2021, 10:24 a.m. UTC | #3
Le 07/11/2021 à 13:48, Richard Henderson a écrit :
> There are a number of alignement issues flagged up by clang,
> this attempts to fix only one of them: getdents.
> 
> r~
> 
> Richard Henderson (4):
>    linux-user: Split out do_getdents, do_getdents64
>    linux-user: Always use flexible arrays for dirent d_name
>    linux-user: Fix member types of target_dirent64
>    linux-user: Rewrite do_getdents, do_getdents64
> 
>   linux-user/syscall_defs.h |  12 +-
>   linux-user/syscall.c      | 290 ++++++++++++++++++--------------------
>   2 files changed, 141 insertions(+), 161 deletions(-)
> 

Series applied to my linux-user-for-6.2 branch.

Thanks,
Laurent