Message ID | 20160916111422.109959-7-aleksandar.markovic@rt-rk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Le 16/09/2016 à 13:14, Aleksandar Markovic a écrit : > From: Aleksandar Markovic <aleksandar.markovic@imgtec.com> > > EDQUOT is defined for Mips platform in Linux kernel in such a way > that it has different value than on most other platforms. However, > correspondant TARGET_EDQUOT for Mips is missing in Qemu code. Moreover, > TARGET_EDQUOT is missing from the table for conversion of error codes > from host to target. This patch fixes these problems. > > Without this patch, syscalls add_key(), keyctl(), link(), mkdir(), mknod(), > open(), rename(), request_key(), setxattr(), symlink(), and write() will not > be able to return the right error code in some scenarios on Mips platform. > (Some of these syscalls are not yet supported in Qemu, but once they are > supported, they will need correct EDQUOT handling.) > > Signed-off-by: Aleksandar Markovic <aleksandar.markovic@imgtec.com> Reviewed-by: Laurent Vivier <laurent@vivier.eu> > --- > linux-user/mips/target_syscall.h | 2 ++ > linux-user/mips64/target_syscall.h | 2 ++ > linux-user/syscall.c | 1 + > 3 files changed, 5 insertions(+) > > diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_syscall.h > index 2b4f390..827799f 100644 > --- a/linux-user/mips/target_syscall.h > +++ b/linux-user/mips/target_syscall.h > @@ -221,6 +221,8 @@ struct target_pt_regs { > #undef TARGET_ENOTRECOVERABLE > #define TARGET_ENOTRECOVERABLE 166 /* State not recoverable */ > > +#undef TARGET_EDQUOT > +#define TARGET_EDQUOT 1133 /* Quota exceeded */ > > #define UNAME_MACHINE "mips" > #define UNAME_MINIMUM_RELEASE "2.6.32" > diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_syscall.h > index 8da9c1f..29c1983 100644 > --- a/linux-user/mips64/target_syscall.h > +++ b/linux-user/mips64/target_syscall.h > @@ -218,6 +218,8 @@ struct target_pt_regs { > #undef TARGET_ENOTRECOVERABLE > #define TARGET_ENOTRECOVERABLE 166 /* State not recoverable */ > > +#undef TARGET_EDQUOT > +#define TARGET_EDQUOT 1133 /* Quota exceeded */ > > #define UNAME_MACHINE "mips64" > #define UNAME_MINIMUM_RELEASE "2.6.32" > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index ee23b29..e4bd40d 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -725,6 +725,7 @@ static uint16_t host_to_target_errno_table[ERRNO_TABLE_SIZE] = { > [ENAVAIL] = TARGET_ENAVAIL, > [EISNAM] = TARGET_EISNAM, > [EREMOTEIO] = TARGET_EREMOTEIO, > + [EDQUOT] = TARGET_EDQUOT, > [ESHUTDOWN] = TARGET_ESHUTDOWN, > [ETOOMANYREFS] = TARGET_ETOOMANYREFS, > [ETIMEDOUT] = TARGET_ETIMEDOUT, >
diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_syscall.h index 2b4f390..827799f 100644 --- a/linux-user/mips/target_syscall.h +++ b/linux-user/mips/target_syscall.h @@ -221,6 +221,8 @@ struct target_pt_regs { #undef TARGET_ENOTRECOVERABLE #define TARGET_ENOTRECOVERABLE 166 /* State not recoverable */ +#undef TARGET_EDQUOT +#define TARGET_EDQUOT 1133 /* Quota exceeded */ #define UNAME_MACHINE "mips" #define UNAME_MINIMUM_RELEASE "2.6.32" diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_syscall.h index 8da9c1f..29c1983 100644 --- a/linux-user/mips64/target_syscall.h +++ b/linux-user/mips64/target_syscall.h @@ -218,6 +218,8 @@ struct target_pt_regs { #undef TARGET_ENOTRECOVERABLE #define TARGET_ENOTRECOVERABLE 166 /* State not recoverable */ +#undef TARGET_EDQUOT +#define TARGET_EDQUOT 1133 /* Quota exceeded */ #define UNAME_MACHINE "mips64" #define UNAME_MINIMUM_RELEASE "2.6.32" diff --git a/linux-user/syscall.c b/linux-user/syscall.c index ee23b29..e4bd40d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -725,6 +725,7 @@ static uint16_t host_to_target_errno_table[ERRNO_TABLE_SIZE] = { [ENAVAIL] = TARGET_ENAVAIL, [EISNAM] = TARGET_EISNAM, [EREMOTEIO] = TARGET_EREMOTEIO, + [EDQUOT] = TARGET_EDQUOT, [ESHUTDOWN] = TARGET_ESHUTDOWN, [ETOOMANYREFS] = TARGET_ETOOMANYREFS, [ETIMEDOUT] = TARGET_ETIMEDOUT,