From: "Isaac J. Manjarres" <isaacm@codeaurora.org>
To: keescook@chromium.org, crecklin@redhat.com
Cc: "Isaac J. Manjarres" <isaacm@codeaurora.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
gregkh@linuxfoundation.org, psodagud@codeaurora.org,
tsoni@codeaurora.org, eberman@codeaurora.org,
stable@vger.kernel.org
Subject: [PATCH] mm/usercopy: Use memory range to be accessed for wraparound check
Date: Tue, 30 Jul 2019 10:54:13 -0700 [thread overview]
Message-ID: <1564509253-23287-1-git-send-email-isaacm@codeaurora.org> (raw)
Currently, when checking to see if accessing n bytes starting at
address "ptr" will cause a wraparound in the memory addresses,
the check in check_bogus_address() adds an extra byte, which is
incorrect, as the range of addresses that will be accessed is
[ptr, ptr + (n - 1)].
This can lead to incorrectly detecting a wraparound in the
memory address, when trying to read 4 KB from memory that is
mapped to the the last possible page in the virtual address
space, when in fact, accessing that range of memory would not
cause a wraparound to occur.
Use the memory range that will actually be accessed when
considering if accessing a certain amount of bytes will cause
the memory address to wrap around.
Fixes: f5509cc18daa ("mm: Hardened usercopy")
Co-developed-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Cc: stable@vger.kernel.org
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
Acked-by: Kees Cook <keescook@chromium.org>
---
mm/usercopy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/usercopy.c b/mm/usercopy.c
index 2a09796..98e92486 100644
--- a/mm/usercopy.c
+++ b/mm/usercopy.c
@@ -147,7 +147,7 @@ static inline void check_bogus_address(const unsigned long ptr, unsigned long n,
bool to_user)
{
/* Reject if object wraps past end of memory. */
- if (ptr + n < ptr)
+ if (ptr + (n - 1) < ptr)
usercopy_abort("wrapped address", NULL, to_user, 0, ptr + n);
/* Reject if NULL or ZERO-allocation. */
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
next reply other threads:[~2019-07-30 17:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-30 17:54 Isaac J. Manjarres [this message]
2019-07-31 20:25 ` [PATCH] mm/usercopy: Use memory range to be accessed for wraparound check Kees Cook
-- strict thread matches above, loose matches on Subject: below --
2018-11-14 0:51 Isaac J. Manjarres
2018-11-14 10:35 ` William Kucharski
2018-11-14 11:09 ` David Laight
2018-11-14 11:46 ` William Kucharski
2018-11-14 17:32 ` isaacm
2018-11-14 22:50 ` William Kucharski
2018-11-14 23:27 ` Kees Cook
2018-11-14 23:32 ` Kees Cook
2018-11-15 7:05 ` Sasha Levin
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=1564509253-23287-1-git-send-email-isaacm@codeaurora.org \
--to=isaacm@codeaurora.org \
--cc=crecklin@redhat.com \
--cc=eberman@codeaurora.org \
--cc=gregkh@linuxfoundation.org \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=psodagud@codeaurora.org \
--cc=stable@vger.kernel.org \
--cc=tsoni@codeaurora.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: 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.