From: Christoph Hellwig <hch@lst.de>
To: Kanchan Joshi <joshiiitr@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>,
Kanchan Joshi <joshi.k@samsung.com>,
kbusch@kernel.org, axboe@kernel.dk, sagi@grimberg.me,
linux-nvme@lists.infradead.org, vincentfu@gmail.com,
ankit.kumar@samsung.com, cpgs@samsung.com,
stable@vger.kernel.org, Vincent Fu <vincent.fu@samsung.com>
Subject: Re: [PATCH v3] nvme: fix memory corruption for passthrough metadata
Date: Wed, 11 Oct 2023 07:02:54 +0200 [thread overview]
Message-ID: <20231011050254.GA32444@lst.de> (raw)
In-Reply-To: <CA+1E3r+2Ce4BCZ2feJX37e1-dtvpZtY6ajiaO_orn8Airu2Bqg@mail.gmail.com>
On Tue, Oct 10, 2023 at 07:09:54PM +0530, Kanchan Joshi wrote:
> The case is for the single interleaved buffer with both data and
> metadata. When the driver sends this buffer to blk_rq_map_user_iov(),
> it may make a copy of it.
> This kernel buffer will be used for DMA rather than user buffer. If
> the user-buffer is short, the kernel buffer is also short.
Yes. Note that we'll corrupt memory either way, so user vs kernel
does not matter.
> Does this explanation help?
> I can move the part to a separate patch.
Definitively separate function please, not sure if a separate
patch is required.
> Yes, not io_uring specific.
> Just that I was not sure on (i) whether to go back that far in
> history, and (ii) what patch to tag.
I think the one that adds the original problem is:
63263d60e0f9f37bfd5e6a1e83a62f0e62fc459f
Author: Keith Busch <kbusch@kernel.org>
Date: Tue Aug 29 17:46:04 2017 -0400
nvme: Use metadata for passthrough commands
> > > + /* Exclude commands that do not have nlb in cdw12 */
> > > + if (!nvme_nlb_in_cdw12(c->common.opcode))
> > > + return true;
> >
> > So we can still get exactly the same corruption for all commands that
> > are not known? That's not a very safe way to deal with the issue..
>
> Given the way things are in NVMe, I do not find a better way.
> Maybe another day for commands that do (or can do) things very
> differently for nlb and PI representation.
Fixing just a subset of these problems is pointless. If people want
to use metadata on vendor specific commands they need to work with
NVMe to figure out a generic way to pass the length.
next prev parent reply other threads:[~2023-10-11 5:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20231006135322epcas5p1c9acf38b04f35017181c715c706281dc@epcas5p1.samsung.com>
2023-10-06 13:47 ` [PATCH v3] nvme: fix memory corruption for passthrough metadata Kanchan Joshi
2023-10-10 7:46 ` Christoph Hellwig
2023-10-10 13:39 ` Kanchan Joshi
2023-10-10 15:31 ` Clay Mayers
2023-10-11 5:03 ` Christoph Hellwig
2023-10-11 5:02 ` Christoph Hellwig [this message]
2023-10-11 5:26 ` Kanchan Joshi
2023-10-11 6:36 ` Christoph Hellwig
2023-10-11 17:04 ` Keith Busch
2023-10-12 4:36 ` Christoph Hellwig
2023-10-12 15:31 ` Keith Busch
2023-10-12 15:46 ` Christoph Hellwig
2023-10-13 2:19 ` Kanchan Joshi
2023-10-13 4:38 ` Christoph Hellwig
2023-10-13 5:50 ` Kanchan Joshi
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=20231011050254.GA32444@lst.de \
--to=hch@lst.de \
--cc=ankit.kumar@samsung.com \
--cc=axboe@kernel.dk \
--cc=cpgs@samsung.com \
--cc=joshi.k@samsung.com \
--cc=joshiiitr@gmail.com \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
--cc=stable@vger.kernel.org \
--cc=vincent.fu@samsung.com \
--cc=vincentfu@gmail.com \
/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.