From: Johan Hovold <johan@kernel.org>
To: Francesco Dolcini <francesco@dolcini.it>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Jiri Slaby" <jirislaby@kernel.org>,
linux-bluetooth@vger.kernel.org,
linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
greybus-dev@lists.linaro.org, linux-iio@vger.kernel.org,
netdev@vger.kernel.org, chrome-platform@lists.linux.dev,
platform-driver-x86@vger.kernel.org,
linux-serial@vger.kernel.org, linux-sound@vger.kernel.org,
"Francesco Dolcini" <francesco.dolcini@toradex.com>,
"Luiz Augusto von Dentz" <luiz.dentz@gmail.com>,
"Alex Elder" <elder@kernel.org>,
"Jonathan Cameron" <jic23@kernel.org>,
"Lee Jones" <lee@kernel.org>, "Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Eric Dumazet" <edumazet@google.com>,
"David S. Miller" <davem@davemloft.net>,
"Krzysztof Kozlowski" <krzysztof.kozlowski@linaro.org>,
"Hans de Goede" <hdegoede@redhat.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Benson Leung" <bleung@chromium.org>,
"Tzung-Bi Shih" <tzungbi@kernel.org>,
"Rob Herring" <robh@kernel.org>
Subject: Re: [PATCH v1] treewide, serdev: change receive_buf() return type to size_t
Date: Fri, 15 Dec 2023 14:51:09 +0100 [thread overview]
Message-ID: <ZXxZzd1iBOCmnczH@hovoldconsulting.com> (raw)
In-Reply-To: <20231214170146.641783-1-francesco@dolcini.it>
On Thu, Dec 14, 2023 at 06:01:46PM +0100, Francesco Dolcini wrote:
> From: Francesco Dolcini <francesco.dolcini@toradex.com>
>
> receive_buf() is called from ttyport_receive_buf() that expects values
> ">= 0" from serdev_controller_receive_buf(), change its return type from
> ssize_t to size_t.
>
> Suggested-by: Jiri Slaby <jirislaby@kernel.org>
> Link: https://lore.kernel.org/all/087be419-ec6b-47ad-851a-5e1e3ea5cfcc@kernel.org/
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> ---
> hello,
> patch is based on current linux next.
>
> It has an obvious problem, it touches files from multiple subsystem in a single
> patch that is complicated to review and eventually merge, just splitting this
> would however not work, it will break bisectability and the build.
>
> I am looking for advise on the best way to move forward.
>
> I see the following options:
> - keep it as it is
> - break it down with a patch with each subsystem, and squash before applying
> from a single (tty?) subsystem
> - go for a multi stage approach, defining a new callback, move to it and in
> the end remove the original one, likewise it was done for i2c lately
>
> ---
> drivers/bluetooth/btmtkuart.c | 4 ++--
> drivers/bluetooth/btnxpuart.c | 4 ++--
> diff --git a/drivers/bluetooth/btmtkuart.c b/drivers/bluetooth/btmtkuart.c
> index 3c84fcbda01a..e6bc4a73c9fc 100644
> --- a/drivers/bluetooth/btmtkuart.c
> +++ b/drivers/bluetooth/btmtkuart.c
> @@ -383,8 +383,8 @@ static void btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)
> }
> }
>
> -static ssize_t btmtkuart_receive_buf(struct serdev_device *serdev,
> - const u8 *data, size_t count)
> +static size_t btmtkuart_receive_buf(struct serdev_device *serdev,
> + const u8 *data, size_t count)
> {
> struct btmtkuart_dev *bdev = serdev_device_get_drvdata(serdev);
>
> diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
> index 1d592ac413d1..056bef5b2919 100644
> --- a/drivers/bluetooth/btnxpuart.c
> +++ b/drivers/bluetooth/btnxpuart.c
> @@ -1264,8 +1264,8 @@ static const struct h4_recv_pkt nxp_recv_pkts[] = {
> { NXP_RECV_FW_REQ_V3, .recv = nxp_recv_fw_req_v3 },
> };
>
> -static ssize_t btnxpuart_receive_buf(struct serdev_device *serdev,
> - const u8 *data, size_t count)
> +static size_t btnxpuart_receive_buf(struct serdev_device *serdev,
> + const u8 *data, size_t count)
> {
> struct btnxpuart_dev *nxpdev = serdev_device_get_drvdata(serdev);
A quick check of just the first two functions here shows that they can
return negative values.
> diff --git a/drivers/tty/serdev/serdev-ttyport.c b/drivers/tty/serdev/serdev-ttyport.c
> index e94e090cf0a1..3d7ae7fa5018 100644
> --- a/drivers/tty/serdev/serdev-ttyport.c
> +++ b/drivers/tty/serdev/serdev-ttyport.c
> @@ -27,19 +27,17 @@ static size_t ttyport_receive_buf(struct tty_port *port, const u8 *cp,
> {
> struct serdev_controller *ctrl = port->client_data;
> struct serport *serport = serdev_controller_get_drvdata(ctrl);
> - int ret;
> + size_t ret;
>
> if (!test_bit(SERPORT_ACTIVE, &serport->flags))
> return 0;
>
> ret = serdev_controller_receive_buf(ctrl, cp, count);
>
> - dev_WARN_ONCE(&ctrl->dev, ret < 0 || ret > count,
> - "receive_buf returns %d (count = %zu)\n",
> + dev_WARN_ONCE(&ctrl->dev, ret > count,
> + "receive_buf returns %zu (count = %zu)\n",
> ret, count);
> - if (ret < 0)
> - return 0;
> - else if (ret > count)
> + if (ret > count)
> return count;
>
> return ret;
So please do not apply this patch until the various implementations have
been fixed.
Johan
WARNING: multiple messages have this Message-ID (diff)
From: Johan Hovold <johan@kernel.org>
To: Francesco Dolcini <francesco@dolcini.it>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Jiri Slaby" <jirislaby@kernel.org>,
linux-bluetooth@vger.kernel.org,
linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
greybus-dev@lists.linaro.org, linux-iio@vger.kernel.org,
netdev@vger.kernel.org, chrome-platform@lists.linux.dev,
platform-driver-x86@vger.kernel.org,
linux-serial@vger.kernel.org, linux-sound@vger.kernel.org,
"Francesco Dolcini" <francesco.dolcini@toradex.com>,
"Luiz Augusto von Dentz" <luiz.dentz@gmail.com>,
"Alex Elder" <elder@kernel.org>,
"Jonathan Cameron" <jic23@kernel.org>,
"Lee Jones" <lee@kernel.org>, "Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Eric Dumazet" <edumazet@google.com>,
"David S. Miller" <davem@davemloft.net>,
"Krzysztof Kozlowski" <krzysztof.kozlowski@linaro.org>,
"Hans de Goede" <hdegoede@redhat.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Benson Leung" <bleung@chromium.org>,
"Tzung-Bi Shih" <tzungbi@kernel.org>,
"Rob Herring" <robh@kernel.org>
Subject: Re: [PATCH v1] treewide, serdev: change receive_buf() return type to size_t
Date: Fri, 15 Dec 2023 14:51:09 +0100 [thread overview]
Message-ID: <ZXxZzd1iBOCmnczH@hovoldconsulting.com> (raw)
In-Reply-To: <20231214170146.641783-1-francesco@dolcini.it>
On Thu, Dec 14, 2023 at 06:01:46PM +0100, Francesco Dolcini wrote:
> From: Francesco Dolcini <francesco.dolcini@toradex.com>
>
> receive_buf() is called from ttyport_receive_buf() that expects values
> ">= 0" from serdev_controller_receive_buf(), change its return type from
> ssize_t to size_t.
>
> Suggested-by: Jiri Slaby <jirislaby@kernel.org>
> Link: https://lore.kernel.org/all/087be419-ec6b-47ad-851a-5e1e3ea5cfcc@kernel.org/
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> ---
> hello,
> patch is based on current linux next.
>
> It has an obvious problem, it touches files from multiple subsystem in a single
> patch that is complicated to review and eventually merge, just splitting this
> would however not work, it will break bisectability and the build.
>
> I am looking for advise on the best way to move forward.
>
> I see the following options:
> - keep it as it is
> - break it down with a patch with each subsystem, and squash before applying
> from a single (tty?) subsystem
> - go for a multi stage approach, defining a new callback, move to it and in
> the end remove the original one, likewise it was done for i2c lately
>
> ---
> drivers/bluetooth/btmtkuart.c | 4 ++--
> drivers/bluetooth/btnxpuart.c | 4 ++--
> diff --git a/drivers/bluetooth/btmtkuart.c b/drivers/bluetooth/btmtkuart.c
> index 3c84fcbda01a..e6bc4a73c9fc 100644
> --- a/drivers/bluetooth/btmtkuart.c
> +++ b/drivers/bluetooth/btmtkuart.c
> @@ -383,8 +383,8 @@ static void btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)
> }
> }
>
> -static ssize_t btmtkuart_receive_buf(struct serdev_device *serdev,
> - const u8 *data, size_t count)
> +static size_t btmtkuart_receive_buf(struct serdev_device *serdev,
> + const u8 *data, size_t count)
> {
> struct btmtkuart_dev *bdev = serdev_device_get_drvdata(serdev);
>
> diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
> index 1d592ac413d1..056bef5b2919 100644
> --- a/drivers/bluetooth/btnxpuart.c
> +++ b/drivers/bluetooth/btnxpuart.c
> @@ -1264,8 +1264,8 @@ static const struct h4_recv_pkt nxp_recv_pkts[] = {
> { NXP_RECV_FW_REQ_V3, .recv = nxp_recv_fw_req_v3 },
> };
>
> -static ssize_t btnxpuart_receive_buf(struct serdev_device *serdev,
> - const u8 *data, size_t count)
> +static size_t btnxpuart_receive_buf(struct serdev_device *serdev,
> + const u8 *data, size_t count)
> {
> struct btnxpuart_dev *nxpdev = serdev_device_get_drvdata(serdev);
A quick check of just the first two functions here shows that they can
return negative values.
> diff --git a/drivers/tty/serdev/serdev-ttyport.c b/drivers/tty/serdev/serdev-ttyport.c
> index e94e090cf0a1..3d7ae7fa5018 100644
> --- a/drivers/tty/serdev/serdev-ttyport.c
> +++ b/drivers/tty/serdev/serdev-ttyport.c
> @@ -27,19 +27,17 @@ static size_t ttyport_receive_buf(struct tty_port *port, const u8 *cp,
> {
> struct serdev_controller *ctrl = port->client_data;
> struct serport *serport = serdev_controller_get_drvdata(ctrl);
> - int ret;
> + size_t ret;
>
> if (!test_bit(SERPORT_ACTIVE, &serport->flags))
> return 0;
>
> ret = serdev_controller_receive_buf(ctrl, cp, count);
>
> - dev_WARN_ONCE(&ctrl->dev, ret < 0 || ret > count,
> - "receive_buf returns %d (count = %zu)\n",
> + dev_WARN_ONCE(&ctrl->dev, ret > count,
> + "receive_buf returns %zu (count = %zu)\n",
> ret, count);
> - if (ret < 0)
> - return 0;
> - else if (ret > count)
> + if (ret > count)
> return count;
>
> return ret;
So please do not apply this patch until the various implementations have
been fixed.
Johan
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-12-15 13:51 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-14 17:01 [PATCH v1] treewide, serdev: change receive_buf() return type to size_t Francesco Dolcini
2023-12-14 17:01 ` Francesco Dolcini
2023-12-14 17:39 ` Francesco Dolcini
2023-12-14 17:39 ` Francesco Dolcini
2023-12-15 13:26 ` Greg Kroah-Hartman
2023-12-15 13:26 ` Greg Kroah-Hartman
2023-12-15 13:36 ` Johan Hovold
2023-12-15 13:36 ` Johan Hovold
2023-12-15 13:55 ` Francesco Dolcini
2023-12-15 13:55 ` Francesco Dolcini
2023-12-15 16:18 ` Johan Hovold
2023-12-15 16:18 ` Johan Hovold
2023-12-15 17:07 ` Francesco Dolcini
2023-12-15 17:07 ` Francesco Dolcini
2023-12-18 8:35 ` Johan Hovold
2023-12-18 8:35 ` Johan Hovold
2023-12-15 14:11 ` Greg Kroah-Hartman
2023-12-15 14:11 ` Greg Kroah-Hartman
2023-12-15 13:51 ` Johan Hovold [this message]
2023-12-15 13:51 ` Johan Hovold
2023-12-15 13:59 ` Francesco Dolcini
2023-12-15 13:59 ` Francesco Dolcini
2023-12-15 16:32 ` Johan Hovold
2023-12-15 16:32 ` Johan Hovold
2023-12-15 17:12 ` [v1] " bluez.test.bot
2023-12-17 12:37 ` [PATCH v1] " Jonathan Cameron
2023-12-17 12:37 ` Jonathan Cameron
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=ZXxZzd1iBOCmnczH@hovoldconsulting.com \
--to=johan@kernel.org \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=elder@kernel.org \
--cc=francesco.dolcini@toradex.com \
--cc=francesco@dolcini.it \
--cc=gregkh@linuxfoundation.org \
--cc=greybus-dev@lists.linaro.org \
--cc=hdegoede@redhat.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jic23@kernel.org \
--cc=jirislaby@kernel.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=kuba@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=robh@kernel.org \
--cc=tzungbi@kernel.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.