From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Kwangjin Ko <kwangjin.ko@sk.com>
Cc: <dave@stgolabs.net>, <dave.jiang@intel.com>,
<alison.schofield@intel.com>, <vishal.l.verma@intel.com>,
<ira.weiny@intel.com>, <dan.j.williams@intel.com>,
<linux-cxl@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<kernel_team@skhynix.com>
Subject: Re: [PATCH v2 1/1] cxl/core: Fix initialization of mbox_cmd.size_out in get event
Date: Tue, 2 Apr 2024 15:38:58 +0100 [thread overview]
Message-ID: <20240402153858.00007ce3@Huawei.com> (raw)
In-Reply-To: <20240402081404.1106-2-kwangjin.ko@sk.com>
On Tue, 2 Apr 2024 17:14:03 +0900
Kwangjin Ko <kwangjin.ko@sk.com> wrote:
> Since mbox_cmd.size_out is overwritten with the actual output size in
> the function below, it needs to be initialized every time.
>
> cxl_internal_send_cmd -> __cxl_pci_mbox_send_cmd
>
> Problem scenario:
>
> 1) The size_out variable is initially set to the size of the mailbox.
> 2) Read an event.
> - size_out is set to 160 bytes(header 32B + one event 128B).
> - Two event are created while reading.
> 3) Read the new *two* events.
> - size_out is still set to 160 bytes.
> - Although the value of out_len is 288 bytes, only 160 bytes are
> copied from the mailbox register to the local variable.
> - record_count is set to 2.
> - Accessing records[1] will result in reading incorrect data.
>
> Signed-off-by: Kwangjin Ko <kwangjin.ko@sk.com>
Looks correct to me.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> drivers/cxl/core/mbox.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
> index 9adda4795eb7..a38531a055c8 100644
> --- a/drivers/cxl/core/mbox.c
> +++ b/drivers/cxl/core/mbox.c
> @@ -958,13 +958,14 @@ static void cxl_mem_get_records_log(struct cxl_memdev_state *mds,
> .payload_in = &log_type,
> .size_in = sizeof(log_type),
> .payload_out = payload,
> - .size_out = mds->payload_size,
> .min_out = struct_size(payload, records, 0),
> };
>
> do {
> int rc, i;
>
> + mbox_cmd.size_out = mds->payload_size;
> +
> rc = cxl_internal_send_cmd(mds, &mbox_cmd);
> if (rc) {
> dev_err_ratelimited(dev,
next prev parent reply other threads:[~2024-04-02 14:39 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-02 8:14 [PATCH v2 0/1] cxl/core: Fix initialization of mbox_cmd.size_out in get event Kwangjin Ko
2024-04-02 8:14 ` [PATCH v2 1/1] " Kwangjin Ko
2024-04-02 14:38 ` Jonathan Cameron [this message]
2024-04-02 16:25 ` Ira Weiny
2024-04-03 14:53 ` Dan Williams
2024-04-04 13:30 ` Jonathan Cameron
2024-04-04 17:35 ` Dan Williams
2024-04-04 20:20 ` Ira Weiny
2024-04-05 16:04 ` Alison Schofield
2024-04-05 16:40 ` Jonathan Cameron
2024-04-05 17:37 ` Alison Schofield
2024-04-05 17:45 ` Dan Williams
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=20240402153858.00007ce3@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=alison.schofield@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=ira.weiny@intel.com \
--cc=kernel_team@skhynix.com \
--cc=kwangjin.ko@sk.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=vishal.l.verma@intel.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.