All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ye, Xiang" <xiang.ye@intel.com>
To: Oliver Neukum <oneukum@suse.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Matthias Kaehlcke <mka@chromium.org>, Lee Jones <lee@kernel.org>,
	Wolfram Sang <wsa@kernel.org>, Tyrone Ting <kfting@nuvoton.com>,
	Mark Brown <broonie@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>, <linux-usb@vger.kernel.org>,
	<linux-i2c@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-spi@vger.kernel.org>, <linux-gpio@vger.kernel.org>,
	<srinivas.pandruvada@intel.com>,
	<heikki.krogerus@linux.intel.com>,
	<andriy.shevchenko@linux.intel.com>,
	<sakari.ailus@linux.intel.com>, <zhifeng.wang@intel.com>,
	<wentong.wu@intel.com>, <lixu.zhang@intel.com>
Subject: Re: [PATCH v4 1/5] mfd: Add support for Intel LJCA device
Date: Tue, 14 Mar 2023 15:15:05 +0800	[thread overview]
Message-ID: <ZBAe+bpKmvC1iVfq@ye-NUC7i7DNHE> (raw)
In-Reply-To: <ca995ed7-e6db-4265-e528-5e29fb418594@suse.com>

Hi Oliver,

Thanks for the review.
On Mon, Mar 13, 2023 at 02:27:50PM +0100, Oliver Neukum wrote:
> On 10.03.23 05:14, Ye, Xiang wrote:
> > Hi Oliver,
> 
> Hi,
> 
> sorry for the delayed answer.
No problem.
> 
> > Thanks for your review.
> > On Thu, Mar 09, 2023 at 01:53:28PM +0100, Oliver Neukum wrote:
> > > 
> > > 
> > > On 09.03.23 08:10, Ye Xiang wrote:
> > > 
> > > > +static int ljca_stub_write(struct ljca_stub *stub, u8 cmd, const void *obuf, unsigned int obuf_len,
> > > > +			   void *ibuf, unsigned int *ibuf_len, bool wait_ack, unsigned long timeout)
> > > 
> > > Why do you make ibuf_len a pointer?
> > Because ibuf_len is also used as output of this function here.
> > It stores the actual length of ibuf receive from LJCA device.
> 
> Yes, I understand that now, thank you for the explanation, yet
> that is problematic, if we look at another issue. See further down:
> 
> > > > +		ret = -ENODEV;
> > > > +		goto error_put;
> > > > +	}
> > > > +
> > > > +	mutex_lock(&dev->mutex);
> > > > +	stub->cur_cmd = cmd;
> > > > +	stub->ipacket.ibuf = ibuf;
> > > > +	stub->ipacket.ibuf_len = ibuf_len;
> 
> Here you store the pointer into the stub. Hence we must make sure
> that the location it points to stays valid.
> 

> Now let's look at ljca_mng_reset_handshake(). I am afraid I have to quote
> its first part in full:
> 
> +static int ljca_mng_reset_handshake(struct ljca_stub *stub)
> +{
> +	struct ljca_mng_priv *priv;
> +	__le32 reset_id;
> +	__le32 reset_id_ret = 0;
> +	unsigned int ilen = sizeof(__le32);
> 
> This is on the _stack_
> Highly important !!!
> 
> +	int ret;
> +
> +	priv = ljca_priv(stub);
> +	reset_id = cpu_to_le32(priv->reset_id++);
> +	ret = ljca_stub_write(stub, LJCA_MNG_RESET_NOTIFY, &reset_id, sizeof(reset_id),
> +			      &reset_id_ret, &ilen, true, LJCA_USB_WRITE_ACK_TIMEOUT_MS);
> 
> If we run into the timeout error case, ret will be -ETIMEDOUT.
> 
> +	if (ret)
> +		return ret;
> 
> And thus here we return and free the stack _including_ "ilen", which we
> still have a pointer to. That means if the operation concludes after
> a timeout, we _will_ follow a rogue pointer.
> A couple of functions have this race condition.
Got it. Will fix that on next version.
> 
> 

Thanks
Ye Xiang


  reply	other threads:[~2023-03-14  7:15 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-09  7:10 [PATCH v4 0/5] Add Intel LJCA device driver Ye Xiang
2023-03-09  7:10 ` [PATCH v4 1/5] mfd: Add support for Intel LJCA device Ye Xiang
2023-03-09  7:49   ` Greg Kroah-Hartman
2023-03-09  9:10     ` Ye, Xiang
2023-03-09  9:26       ` Greg Kroah-Hartman
2023-03-09 10:16         ` Ye, Xiang
2023-03-09  7:52   ` Greg Kroah-Hartman
2023-03-09  9:31     ` Ye, Xiang
2023-03-09  9:41       ` Greg Kroah-Hartman
2023-03-09 10:06         ` Andi Shyti
2023-03-09 15:45           ` Ye, Xiang
2023-03-09 15:58             ` Greg Kroah-Hartman
2023-03-09 17:42               ` Ye, Xiang
2023-03-09  7:56   ` Arnd Bergmann
2023-03-09 10:00     ` Ye, Xiang
2023-03-09 11:03     ` Mark Brown
2023-03-09 11:30       ` Arnd Bergmann
2023-03-09 12:53   ` Oliver Neukum
2023-03-10  4:14     ` Ye, Xiang
2023-03-13 13:27       ` Oliver Neukum
2023-03-14  7:15         ` Ye, Xiang [this message]
2023-03-09  7:10 ` [PATCH v4 2/5] gpio: Add support for Intel LJCA USB GPIO driver Ye Xiang
2023-03-09 13:40   ` Oliver Neukum
2023-03-09 13:52     ` Andy Shevchenko
2023-03-09 14:06       ` Greg Kroah-Hartman
2023-03-09 14:18       ` Linus Walleij
2023-03-09 14:36         ` Greg Kroah-Hartman
2023-03-09 14:48         ` Arnd Bergmann
2023-03-09 17:37           ` Oliver Neukum
2023-03-09 17:30       ` Oliver Neukum
2023-03-10  5:01     ` Ye, Xiang
2023-03-10  7:11       ` Greg Kroah-Hartman
2023-03-10  7:39         ` Ye, Xiang
2023-03-10  7:53           ` Greg Kroah-Hartman
2023-03-10  8:59             ` Ye, Xiang
2023-03-11 12:13   ` Krzysztof Kozlowski
2023-03-12 15:40     ` Ye, Xiang
2023-03-09  7:10 ` [PATCH v4 3/5] i2c: Add support for Intel LJCA USB I2C driver Ye Xiang
2023-03-09  7:10 ` [PATCH v4 4/5] spi: Add support for Intel LJCA USB SPI driver Ye Xiang
2023-03-09  7:11 ` [PATCH v4 5/5] Documentation: Add ABI doc for attributes of LJCA device Ye Xiang

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=ZBAe+bpKmvC1iVfq@ye-NUC7i7DNHE \
    --to=xiang.ye@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=brgl@bgdev.pl \
    --cc=broonie@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=kfting@nuvoton.com \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=lixu.zhang@intel.com \
    --cc=mka@chromium.org \
    --cc=oneukum@suse.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=srinivas.pandruvada@intel.com \
    --cc=wentong.wu@intel.com \
    --cc=wsa@kernel.org \
    --cc=zhifeng.wang@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.