Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

treewide, serdev: change receive_buf() return type to size_t

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.

The need for this clean-up was noticed while fixing a warning, see
commit 94d053942544 ("Bluetooth: btnxpuart: fix recv_buf() return value").
Changing the callback prototype to return an unsigned seems the best way
to document the API and ensure that is properly used.

GNSS drivers implementation of serdev receive_buf() callback return
directly the return value of gnss_insert_raw(). gnss_insert_raw()
returns a signed int, however this is not an issue since the value
returned is always positive, because of the kfifo_in() implementation.
gnss_insert_raw() could be changed to return also an unsigned, however
this is not implemented here as request by the GNSS maintainer Johan
Hovold.

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>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> #for-iio
Reviewed-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Acked-by: Maximilian Luz <luzmaximilian@gmail.com> # for platform/surface
Acked-by: Lee Jones <lee@kernel.org>
Acked-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240122180551.34429-1-francesco@dolcini.it
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Francesco Dolcini and committed by
Greg Kroah-Hartman
fed99212 cf066f93

+40 -42
+2 -2
drivers/bluetooth/btmtkuart.c
··· 383 383 } 384 384 } 385 385 386 - static ssize_t btmtkuart_receive_buf(struct serdev_device *serdev, 387 - const u8 *data, size_t count) 386 + static size_t btmtkuart_receive_buf(struct serdev_device *serdev, 387 + const u8 *data, size_t count) 388 388 { 389 389 struct btmtkuart_dev *bdev = serdev_device_get_drvdata(serdev); 390 390
+2 -2
drivers/bluetooth/btnxpuart.c
··· 1264 1264 { NXP_RECV_FW_REQ_V3, .recv = nxp_recv_fw_req_v3 }, 1265 1265 }; 1266 1266 1267 - static ssize_t btnxpuart_receive_buf(struct serdev_device *serdev, 1268 - const u8 *data, size_t count) 1267 + static size_t btnxpuart_receive_buf(struct serdev_device *serdev, 1268 + const u8 *data, size_t count) 1269 1269 { 1270 1270 struct btnxpuart_dev *nxpdev = serdev_device_get_drvdata(serdev); 1271 1271
+2 -2
drivers/bluetooth/hci_serdev.c
··· 271 271 * 272 272 * Return: number of processed bytes 273 273 */ 274 - static ssize_t hci_uart_receive_buf(struct serdev_device *serdev, 275 - const u8 *data, size_t count) 274 + static size_t hci_uart_receive_buf(struct serdev_device *serdev, 275 + const u8 *data, size_t count) 276 276 { 277 277 struct hci_uart *hu = serdev_device_get_drvdata(serdev); 278 278
+1 -1
drivers/gnss/serial.c
··· 80 80 .write_raw = gnss_serial_write_raw, 81 81 }; 82 82 83 - static ssize_t gnss_serial_receive_buf(struct serdev_device *serdev, 83 + static size_t gnss_serial_receive_buf(struct serdev_device *serdev, 84 84 const u8 *buf, size_t count) 85 85 { 86 86 struct gnss_serial *gserial = serdev_device_get_drvdata(serdev);
+1 -1
drivers/gnss/sirf.c
··· 160 160 .write_raw = sirf_write_raw, 161 161 }; 162 162 163 - static ssize_t sirf_receive_buf(struct serdev_device *serdev, 163 + static size_t sirf_receive_buf(struct serdev_device *serdev, 164 164 const u8 *buf, size_t count) 165 165 { 166 166 struct sirf_data *data = serdev_device_get_drvdata(serdev);
+3 -3
drivers/greybus/gb-beagleplay.c
··· 271 271 } 272 272 } 273 273 274 - static ssize_t hdlc_rx(struct gb_beagleplay *bg, const u8 *data, size_t count) 274 + static size_t hdlc_rx(struct gb_beagleplay *bg, const u8 *data, size_t count) 275 275 { 276 276 size_t i; 277 277 u8 c; ··· 331 331 flush_work(&bg->tx_work); 332 332 } 333 333 334 - static ssize_t gb_tty_receive(struct serdev_device *sd, const u8 *data, 335 - size_t count) 334 + static size_t gb_tty_receive(struct serdev_device *sd, const u8 *data, 335 + size_t count) 336 336 { 337 337 struct gb_beagleplay *bg = serdev_device_get_drvdata(sd); 338 338
+2 -2
drivers/iio/chemical/pms7003.c
··· 211 211 return checksum == pms7003_calc_checksum(frame); 212 212 } 213 213 214 - static ssize_t pms7003_receive_buf(struct serdev_device *serdev, const u8 *buf, 215 - size_t size) 214 + static size_t pms7003_receive_buf(struct serdev_device *serdev, const u8 *buf, 215 + size_t size) 216 216 { 217 217 struct iio_dev *indio_dev = serdev_device_get_drvdata(serdev); 218 218 struct pms7003_state *state = iio_priv(indio_dev);
+2 -2
drivers/iio/chemical/scd30_serial.c
··· 174 174 return 0; 175 175 } 176 176 177 - static ssize_t scd30_serdev_receive_buf(struct serdev_device *serdev, 178 - const u8 *buf, size_t size) 177 + static size_t scd30_serdev_receive_buf(struct serdev_device *serdev, 178 + const u8 *buf, size_t size) 179 179 { 180 180 struct iio_dev *indio_dev = serdev_device_get_drvdata(serdev); 181 181 struct scd30_serdev_priv *priv;
+2 -2
drivers/iio/chemical/sps30_serial.c
··· 210 210 return rsp_size; 211 211 } 212 212 213 - static ssize_t sps30_serial_receive_buf(struct serdev_device *serdev, 214 - const u8 *buf, size_t size) 213 + static size_t sps30_serial_receive_buf(struct serdev_device *serdev, 214 + const u8 *buf, size_t size) 215 215 { 216 216 struct iio_dev *indio_dev = dev_get_drvdata(&serdev->dev); 217 217 struct sps30_serial_priv *priv;
+2 -2
drivers/iio/imu/bno055/bno055_ser_core.c
··· 378 378 * Also, we assume to RX one pkt per time (i.e. the HW doesn't send anything 379 379 * unless we require to AND we don't queue more than one request per time). 380 380 */ 381 - static ssize_t bno055_ser_receive_buf(struct serdev_device *serdev, 382 - const u8 *buf, size_t size) 381 + static size_t bno055_ser_receive_buf(struct serdev_device *serdev, 382 + const u8 *buf, size_t size) 383 383 { 384 384 int status; 385 385 struct bno055_ser_priv *priv = serdev_device_get_drvdata(serdev);
+2 -2
drivers/mfd/rave-sp.c
··· 471 471 rave_sp_receive_reply(sp, data, length); 472 472 } 473 473 474 - static ssize_t rave_sp_receive_buf(struct serdev_device *serdev, 475 - const u8 *buf, size_t size) 474 + static size_t rave_sp_receive_buf(struct serdev_device *serdev, 475 + const u8 *buf, size_t size) 476 476 { 477 477 struct device *dev = &serdev->dev; 478 478 struct rave_sp *sp = dev_get_drvdata(dev);
+1 -1
drivers/net/ethernet/qualcomm/qca_uart.c
··· 58 58 unsigned char *tx_buffer; 59 59 }; 60 60 61 - static ssize_t 61 + static size_t 62 62 qca_tty_receive(struct serdev_device *serdev, const u8 *data, size_t count) 63 63 { 64 64 struct qcauart *qca = serdev_device_get_drvdata(serdev);
+2 -2
drivers/nfc/pn533/uart.c
··· 203 203 return 0; 204 204 } 205 205 206 - static ssize_t pn532_receive_buf(struct serdev_device *serdev, 207 - const u8 *data, size_t count) 206 + static size_t pn532_receive_buf(struct serdev_device *serdev, 207 + const u8 *data, size_t count) 208 208 { 209 209 struct pn532_uart_phy *dev = serdev_device_get_drvdata(serdev); 210 210 size_t i;
+2 -2
drivers/nfc/s3fwrn5/uart.c
··· 51 51 .write = s3fwrn82_uart_write, 52 52 }; 53 53 54 - static ssize_t s3fwrn82_uart_read(struct serdev_device *serdev, 55 - const u8 *data, size_t count) 54 + static size_t s3fwrn82_uart_read(struct serdev_device *serdev, 55 + const u8 *data, size_t count) 56 56 { 57 57 struct s3fwrn82_uart_phy *phy = serdev_device_get_drvdata(serdev); 58 58 size_t i;
+2 -2
drivers/platform/chrome/cros_ec_uart.c
··· 81 81 struct response_info response; 82 82 }; 83 83 84 - static ssize_t cros_ec_uart_rx_bytes(struct serdev_device *serdev, 85 - const u8 *data, size_t count) 84 + static size_t cros_ec_uart_rx_bytes(struct serdev_device *serdev, 85 + const u8 *data, size_t count) 86 86 { 87 87 struct ec_host_response *host_response; 88 88 struct cros_ec_device *ec_dev = serdev_device_get_drvdata(serdev);
+2 -2
drivers/platform/surface/aggregator/core.c
··· 227 227 228 228 /* -- Glue layer (serdev_device -> ssam_controller). ------------------------ */ 229 229 230 - static ssize_t ssam_receive_buf(struct serdev_device *dev, const u8 *buf, 231 - size_t n) 230 + static size_t ssam_receive_buf(struct serdev_device *dev, const u8 *buf, 231 + size_t n) 232 232 { 233 233 struct ssam_controller *ctrl; 234 234 int ret;
+4 -6
drivers/tty/serdev/serdev-ttyport.c
··· 27 27 { 28 28 struct serdev_controller *ctrl = port->client_data; 29 29 struct serport *serport = serdev_controller_get_drvdata(ctrl); 30 - int ret; 30 + size_t ret; 31 31 32 32 if (!test_bit(SERPORT_ACTIVE, &serport->flags)) 33 33 return 0; 34 34 35 35 ret = serdev_controller_receive_buf(ctrl, cp, count); 36 36 37 - dev_WARN_ONCE(&ctrl->dev, ret < 0 || ret > count, 38 - "receive_buf returns %d (count = %zu)\n", 37 + dev_WARN_ONCE(&ctrl->dev, ret > count, 38 + "receive_buf returns %zu (count = %zu)\n", 39 39 ret, count); 40 - if (ret < 0) 41 - return 0; 42 - else if (ret > count) 40 + if (ret > count) 43 41 return count; 44 42 45 43 return ret;
+4 -4
include/linux/serdev.h
··· 27 27 * not sleep. 28 28 */ 29 29 struct serdev_device_ops { 30 - ssize_t (*receive_buf)(struct serdev_device *, const u8 *, size_t); 30 + size_t (*receive_buf)(struct serdev_device *, const u8 *, size_t); 31 31 void (*write_wakeup)(struct serdev_device *); 32 32 }; 33 33 ··· 185 185 serdev->ops->write_wakeup(serdev); 186 186 } 187 187 188 - static inline ssize_t serdev_controller_receive_buf(struct serdev_controller *ctrl, 189 - const u8 *data, 190 - size_t count) 188 + static inline size_t serdev_controller_receive_buf(struct serdev_controller *ctrl, 189 + const u8 *data, 190 + size_t count) 191 191 { 192 192 struct serdev_device *serdev = ctrl->serdev; 193 193
+2 -2
sound/drivers/serial-generic.c
··· 100 100 snd_serial_generic_tx_wakeup(drvdata); 101 101 } 102 102 103 - static ssize_t snd_serial_generic_receive_buf(struct serdev_device *serdev, 104 - const u8 *buf, size_t count) 103 + static size_t snd_serial_generic_receive_buf(struct serdev_device *serdev, 104 + const u8 *buf, size_t count) 105 105 { 106 106 int ret; 107 107 struct snd_serial_generic *drvdata = serdev_device_get_drvdata(serdev);