From: sashiko-bot@kernel.org
To: "Youngsung Ahn" <ays511.kr@gmail.com>
Cc: linux-rdma@vger.kernel.org
Subject: Re: [PATCH v3] RDMA/rxe: bound the ODP page index against the umem in rxe_check_pagefault()
Date: Sun, 04 Oct 2026 15:50:35 +0000 [thread overview]
Message-ID: <20261004155035.CEA221F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20261004153246.2951263-1-ays511.kr@gmail.com>
> An ODP MR has a page array, map.pfn_list[]. Its size is computed from
> the umem start address. But rxe_check_pagefault() builds the index into
> that array from an iova that is relative to the same start, while the
> access itself was range-checked against the MR's iova (ibmr.iova).
>
> Those two bases do not have to match. reg_mr only requires that start
> and hca_va have the same page offset, so a user can register an MR with
> hca_va = start + N*PAGE. The difference then becomes an index skew of
> (hca_va - start) >> PAGE_SHIFT. Nothing compares the result with the
> size of pfn_list[], so the read goes past the end of the array.
>
> An unprivileged local user can reach this with a single RDMA operation
> on a self-connected rxe QP. KASAN reports a slab-out-of-bounds read. If
> the out-of-bounds qword happens to look like a writable HMM pfn, rxe
> then copies the payload into a page the user never registered.
>
> Reject an index that falls outside the umem and take the fault path
> instead. That path rejects the out-of-range access in
> ib_umem_odp_map_dma_and_lock(), which does check the umem range. The
> other users of pfn_list[], __rxe_odp_mr_copy() and the atomic helpers,
> run only after a successful map, so this single check covers them too.
>
> Fixes: 2fae67ab63db ("RDMA/rxe: Add support for Send/Recv/Write/Read with ODP")
> Signed-off-by: Youngsung Ahn <ays511.kr@gmail.com>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261004153246.2951263-1-ays511.kr@gmail.com?part=1
prev parent reply other threads:[~2026-10-04 15:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-04 15:32 [PATCH v3] RDMA/rxe: bound the ODP page index against the umem in rxe_check_pagefault() Youngsung Ahn
2026-10-04 15:50 ` sashiko-bot [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=20261004155035.CEA221F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=ays511.kr@gmail.com \
--cc=linux-rdma@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.