All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan@imgtec.com>
To: Leon Alrae <leon.alrae@imgtec.com>, qemu-devel@nongnu.org
Cc: riku.voipio@iki.fi, aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH] linux-user: correct stat structure in MIPS N32
Date: Mon, 9 Feb 2015 12:06:43 +0000	[thread overview]
Message-ID: <54D8A2D3.6050603@imgtec.com> (raw)
In-Reply-To: <1422630485-29975-1-git-send-email-leon.alrae@imgtec.com>

[-- Attachment #1: Type: text/plain, Size: 3933 bytes --]

Hi Leon,

On 30/01/15 15:08, Leon Alrae wrote:
> Simple "hello world" MIPS N32 userland program crashes with segfault due to
> incorrectly defined stat structure in QEMU.
> 
> Correct "target_stat" definition to match kernel's "stat64" as in MIPS N32
> there are only plain "stat" syscalls using 64-bit structure.
> 
> Reported-by: Daniel Sanders <daniel.sanders@imgtec.com>
> Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
> Tested-by: Daniel Sanders <daniel.sanders@imgtec.com>

Reviewed-by: James Hogan <james.hogan@imgtec.com>

Cheers
James

> ---
>  linux-user/syscall_defs.h | 86 +++++++++++------------------------------------
>  1 file changed, 19 insertions(+), 67 deletions(-)
> 
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index ebb3be1..0fc4317 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -1600,73 +1600,25 @@ struct target_stat {
>  #elif defined(TARGET_ABI_MIPSN32)
>  
>  struct target_stat {
> -	unsigned	st_dev;
> -	int		st_pad1[3];		/* Reserved for network id */
> -	unsigned int	st_ino;
> -	unsigned int	st_mode;
> -	unsigned int	st_nlink;
> -	int		st_uid;
> -	int		st_gid;
> -	unsigned 	st_rdev;
> -	unsigned int	st_pad2[2];
> -	unsigned int	st_size;
> -	unsigned int	st_pad3;
> -	/*
> -	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
> -	 * but we don't have it under Linux.
> -	 */
> -	unsigned int		target_st_atime;
> -	unsigned int		target_st_atime_nsec;
> -	unsigned int		target_st_mtime;
> -	unsigned int		target_st_mtime_nsec;
> -	unsigned int		target_st_ctime;
> -	unsigned int		target_st_ctime_nsec;
> -	unsigned int		st_blksize;
> -	unsigned int		st_blocks;
> -	unsigned int		st_pad4[14];
> -};
> -
> -/*
> - * This matches struct stat64 in glibc2.1, hence the absolutely insane
> - * amounts of padding around dev_t's.  The memory layout is the same as of
> - * struct stat of the 64-bit kernel.
> - */
> -
> -#define TARGET_HAS_STRUCT_STAT64
> -struct target_stat64 {
> -	unsigned int	st_dev;
> -	unsigned int	st_pad0[3];	/* Reserved for st_dev expansion  */
> -
> -	target_ulong	st_ino;
> -
> -        unsigned int	st_mode;
> -        unsigned int	st_nlink;
> -
> -	int		st_uid;
> -	int		st_gid;
> -
> -	unsigned int	st_rdev;
> -	unsigned int	st_pad1[3];	/* Reserved for st_rdev expansion  */
> -
> -	int		st_size;
> -
> -	/*
> -	 * Actually this should be timestruc_t st_atime, st_mtime and st_ctime
> -	 * but we don't have it under Linux.
> -	 */
> -	int		target_st_atime;
> -	unsigned int	target_st_atime_nsec;	/* Reserved for st_atime expansion  */
> -
> -	int		target_st_mtime;
> -	unsigned int	target_st_mtime_nsec;	/* Reserved for st_mtime expansion  */
> -
> -	int		target_st_ctime;
> -	unsigned int	target_st_ctime_nsec;	/* Reserved for st_ctime expansion  */
> -
> -	unsigned int	st_blksize;
> -	unsigned int	st_pad2;
> -
> -	int		st_blocks;
> +        abi_ulong    st_dev;
> +        abi_ulong    st_pad0[3]; /* Reserved for st_dev expansion */
> +        uint64_t     st_ino;
> +        unsigned int st_mode;
> +        unsigned int st_nlink;
> +        int          st_uid;
> +        int          st_gid;
> +        abi_ulong    st_rdev;
> +        abi_ulong    st_pad1[3]; /* Reserved for st_rdev expansion */
> +        int64_t      st_size;
> +        abi_long     target_st_atime;
> +        abi_ulong    target_st_atime_nsec; /* Reserved for st_atime expansion */
> +        abi_long     target_st_mtime;
> +        abi_ulong    target_st_mtime_nsec; /* Reserved for st_mtime expansion */
> +        abi_long     target_st_ctime;
> +        abi_ulong    target_st_ctime_nsec; /* Reserved for st_ctime expansion */
> +        abi_ulong    st_blksize;
> +        abi_ulong    st_pad2;
> +        int64_t      st_blocks;
>  };
>  
>  #elif defined(TARGET_ABI_MIPSO32)
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

      reply	other threads:[~2015-02-09 12:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-30 15:08 [Qemu-devel] [PATCH] linux-user: correct stat structure in MIPS N32 Leon Alrae
2015-02-09 12:06 ` James Hogan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54D8A2D3.6050603@imgtec.com \
    --to=james.hogan@imgtec.com \
    --cc=aurelien@aurel32.net \
    --cc=leon.alrae@imgtec.com \
    --cc=qemu-devel@nongnu.org \
    --cc=riku.voipio@iki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.