From: Christophe Leroy <christophe.leroy@c-s.fr> To: Benjamin Herrenschmidt <benh@kernel.crashing.org>, Paul Mackerras <paulus@samba.org>, Michael Ellerman <mpe@ellerman.id.au> Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: [PATCH] powerpc/uaccess: fix warning/error with access_ok() Date: Thu, 18 Oct 2018 08:48:42 +0000 (UTC) [thread overview] Message-ID: <40873f45f922b28c727c013e3883be467fc31c56.1539852411.git.christophe.leroy@c-s.fr> (raw) With the following peace of code, the following compilation warning is encountered: if (_IOC_DIR(ioc) != _IOC_NONE) { int verify = _IOC_DIR(ioc) & _IOC_READ ? VERIFY_WRITE : VERIFY_READ; if (!access_ok(verify, ioarg, _IOC_SIZE(ioc))) { drivers/platform/test/dev.c: In function ‘my_ioctl’: drivers/platform/test/dev.c:219:7: warning: unused variable ‘verify’ [-Wunused-variable] int verify = _IOC_DIR(ioc) & _IOC_READ ? VERIFY_WRITE : VERIFY_READ; This patch fixes it by handing the type to __access_ok(), changing it to an inline function for PPC64 as already done for PPC32 Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> --- arch/powerpc/include/asm/uaccess.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index 15bea9a0f260..97faf0353919 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -47,13 +47,16 @@ static inline void set_fs(mm_segment_t fs) * This check is sufficient because there is a large enough * gap between user addresses and the kernel addresses */ -#define __access_ok(addr, size, segment) \ - (((addr) <= (segment).seg) && ((size) <= (segment).seg)) +static inline int __access_ok(int type, unsigned long addr, unsigned long size, + mm_segment_t seg) +{ + return addr <= seg.seg && size <= seg.seg; +} #else -static inline int __access_ok(unsigned long addr, unsigned long size, - mm_segment_t seg) +static inline int __access_ok(int type, unsigned long addr, unsigned long size, + mm_segment_t seg) { if (addr > seg.seg) return 0; @@ -64,7 +67,7 @@ static inline int __access_ok(unsigned long addr, unsigned long size, #define access_ok(type, addr, size) \ (__chk_user_ptr(addr), \ - __access_ok((__force unsigned long)(addr), (size), get_fs())) + __access_ok((type), (__force unsigned long)(addr), (size), get_fs())) /* * These are the main single-value transfer routines. They automatically -- 2.13.3
WARNING: multiple messages have this Message-ID (diff)
From: Christophe Leroy <christophe.leroy@c-s.fr> To: Benjamin Herrenschmidt <benh@kernel.crashing.org>, Paul Mackerras <paulus@samba.org>, Michael Ellerman <mpe@ellerman.id.au> Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: [PATCH] powerpc/uaccess: fix warning/error with access_ok() Date: Thu, 18 Oct 2018 08:48:42 +0000 (UTC) [thread overview] Message-ID: <40873f45f922b28c727c013e3883be467fc31c56.1539852411.git.christophe.leroy@c-s.fr> (raw) With the following peace of code, the following compilation warning is encountered: if (_IOC_DIR(ioc) != _IOC_NONE) { int verify = _IOC_DIR(ioc) & _IOC_READ ? VERIFY_WRITE : VERIFY_READ; if (!access_ok(verify, ioarg, _IOC_SIZE(ioc))) { drivers/platform/test/dev.c: In function ‘my_ioctl’: drivers/platform/test/dev.c:219:7: warning: unused variable ‘verify’ [-Wunused-variable] int verify = _IOC_DIR(ioc) & _IOC_READ ? VERIFY_WRITE : VERIFY_READ; This patch fixes it by handing the type to __access_ok(), changing it to an inline function for PPC64 as already done for PPC32 Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> --- arch/powerpc/include/asm/uaccess.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index 15bea9a0f260..97faf0353919 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -47,13 +47,16 @@ static inline void set_fs(mm_segment_t fs) * This check is sufficient because there is a large enough * gap between user addresses and the kernel addresses */ -#define __access_ok(addr, size, segment) \ - (((addr) <= (segment).seg) && ((size) <= (segment).seg)) +static inline int __access_ok(int type, unsigned long addr, unsigned long size, + mm_segment_t seg) +{ + return addr <= seg.seg && size <= seg.seg; +} #else -static inline int __access_ok(unsigned long addr, unsigned long size, - mm_segment_t seg) +static inline int __access_ok(int type, unsigned long addr, unsigned long size, + mm_segment_t seg) { if (addr > seg.seg) return 0; @@ -64,7 +67,7 @@ static inline int __access_ok(unsigned long addr, unsigned long size, #define access_ok(type, addr, size) \ (__chk_user_ptr(addr), \ - __access_ok((__force unsigned long)(addr), (size), get_fs())) + __access_ok((type), (__force unsigned long)(addr), (size), get_fs())) /* * These are the main single-value transfer routines. They automatically -- 2.13.3
next reply other threads:[~2018-10-18 8:48 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-10-18 8:48 Christophe Leroy [this message] 2018-10-18 8:48 ` [PATCH] powerpc/uaccess: fix warning/error with access_ok() Christophe Leroy 2018-10-18 9:19 ` Christophe LEROY 2018-10-18 23:11 ` kbuild test robot 2018-10-18 23:11 ` kbuild test robot
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=40873f45f922b28c727c013e3883be467fc31c56.1539852411.git.christophe.leroy@c-s.fr \ --to=christophe.leroy@c-s.fr \ --cc=benh@kernel.crashing.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mpe@ellerman.id.au \ --cc=paulus@samba.org \ /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: linkBe 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.