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

Configure Feed

Select the types of activity you want to include in your feed.

iio: adc: Use iio_push_to_buffers_with_ts() to provide length for runtime checks.

This new function allows us to perform debug checks in the helper to ensure
that the overrun does not occur. Use it in all the simple cases where
either a static buffer or a structure is used in the drivers.

Reviewed-by: David Lechner <dlechner@baylibre.com>
Link: https://patch.msgid.link/20250413103443.2420727-10-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

+71 -63
+2 -1
drivers/iio/adc/ad4000.c
··· 793 793 if (ret < 0) 794 794 goto err_out; 795 795 796 - iio_push_to_buffers_with_timestamp(indio_dev, &st->scan, pf->timestamp); 796 + iio_push_to_buffers_with_ts(indio_dev, &st->scan, sizeof(st->scan), 797 + pf->timestamp); 797 798 798 799 err_out: 799 800 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/ad4030.c
··· 707 707 if (ret) 708 708 goto out; 709 709 710 - iio_push_to_buffers_with_timestamp(indio_dev, st->rx_data.raw, 711 - pf->timestamp); 710 + iio_push_to_buffers_with_ts(indio_dev, &st->rx_data, sizeof(st->rx_data), 711 + pf->timestamp); 712 712 713 713 out: 714 714 iio_trigger_notify_done(indio_dev->trig);
+2 -1
drivers/iio/adc/ad4695.c
··· 801 801 if (ret) 802 802 goto out; 803 803 804 - iio_push_to_buffers_with_timestamp(indio_dev, st->buf, pf->timestamp); 804 + iio_push_to_buffers_with_ts(indio_dev, st->buf, sizeof(st->buf), 805 + pf->timestamp); 805 806 806 807 out: 807 808 iio_trigger_notify_done(indio_dev->trig);
+3 -4
drivers/iio/adc/ad7266.c
··· 86 86 int ret; 87 87 88 88 ret = spi_read(st->spi, st->data.sample, 4); 89 - if (ret == 0) { 90 - iio_push_to_buffers_with_timestamp(indio_dev, &st->data, 91 - pf->timestamp); 92 - } 89 + if (ret == 0) 90 + iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data), 91 + pf->timestamp); 93 92 94 93 iio_trigger_notify_done(indio_dev->trig); 95 94
+2 -2
drivers/iio/adc/ad7298.c
··· 155 155 if (b_sent) 156 156 goto done; 157 157 158 - iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf, 159 - iio_get_time_ns(indio_dev)); 158 + iio_push_to_buffers_with_ts(indio_dev, st->rx_buf, sizeof(st->rx_buf), 159 + iio_get_time_ns(indio_dev)); 160 160 161 161 done: 162 162 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/ad7380.c
··· 1361 1361 if (ret) 1362 1362 goto out; 1363 1363 1364 - iio_push_to_buffers_with_timestamp(indio_dev, &st->scan_data, 1365 - pf->timestamp); 1364 + iio_push_to_buffers_with_ts(indio_dev, &st->scan_data, sizeof(st->scan_data), 1365 + pf->timestamp); 1366 1366 1367 1367 out: 1368 1368 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/ad7476.c
··· 99 99 if (b_sent < 0) 100 100 goto done; 101 101 102 - iio_push_to_buffers_with_timestamp(indio_dev, st->data, 103 - iio_get_time_ns(indio_dev)); 102 + iio_push_to_buffers_with_ts(indio_dev, st->data, sizeof(st->data), 103 + iio_get_time_ns(indio_dev)); 104 104 done: 105 105 iio_trigger_notify_done(indio_dev->trig); 106 106
+2 -2
drivers/iio/adc/ad7606.c
··· 605 605 if (ret) 606 606 goto error_ret; 607 607 608 - iio_push_to_buffers_with_timestamp(indio_dev, &st->data, 609 - iio_get_time_ns(indio_dev)); 608 + iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data), 609 + iio_get_time_ns(indio_dev)); 610 610 error_ret: 611 611 iio_trigger_notify_done(indio_dev->trig); 612 612 /* The rising edge of the CONVST signal starts a new conversion. */
+3 -2
drivers/iio/adc/ad7768-1.c
··· 533 533 if (ret < 0) 534 534 goto out; 535 535 536 - iio_push_to_buffers_with_timestamp(indio_dev, &st->data.scan, 537 - iio_get_time_ns(indio_dev)); 536 + iio_push_to_buffers_with_ts(indio_dev, &st->data.scan, 537 + sizeof(st->data.scan), 538 + iio_get_time_ns(indio_dev)); 538 539 539 540 out: 540 541 iio_trigger_notify_done(indio_dev->trig);
+2 -1
drivers/iio/adc/ad7779.c
··· 595 595 goto exit_handler; 596 596 } 597 597 598 - iio_push_to_buffers_with_timestamp(indio_dev, &st->data, pf->timestamp); 598 + iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data), 599 + pf->timestamp); 599 600 600 601 exit_handler: 601 602 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/ad7923.c
··· 207 207 if (b_sent) 208 208 goto done; 209 209 210 - iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf, 211 - iio_get_time_ns(indio_dev)); 210 + iio_push_to_buffers_with_ts(indio_dev, st->rx_buf, sizeof(st->rx_buf), 211 + iio_get_time_ns(indio_dev)); 212 212 213 213 done: 214 214 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/dln2-adc.c
··· 488 488 (void *)dev_data.values + t->from, t->length); 489 489 } 490 490 491 - iio_push_to_buffers_with_timestamp(indio_dev, &data, 492 - iio_get_time_ns(indio_dev)); 491 + iio_push_to_buffers_with_ts(indio_dev, &data, sizeof(data), 492 + iio_get_time_ns(indio_dev)); 493 493 494 494 done: 495 495 iio_trigger_notify_done(indio_dev->trig);
+1 -1
drivers/iio/adc/ina2xx-adc.c
··· 766 766 chip->scan.chan[i++] = val; 767 767 } 768 768 769 - iio_push_to_buffers_with_timestamp(indio_dev, &chip->scan, time); 769 + iio_push_to_buffers_with_ts(indio_dev, &chip->scan, sizeof(chip->scan), time); 770 770 771 771 return 0; 772 772 };
+2 -2
drivers/iio/adc/max1118.c
··· 188 188 adc->scan.channels[i] = ret; 189 189 i++; 190 190 } 191 - iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan, 192 - iio_get_time_ns(indio_dev)); 191 + iio_push_to_buffers_with_ts(indio_dev, &adc->scan, sizeof(adc->scan), 192 + iio_get_time_ns(indio_dev)); 193 193 out: 194 194 mutex_unlock(&adc->lock); 195 195
+2 -2
drivers/iio/adc/max11410.c
··· 632 632 goto out; 633 633 } 634 634 635 - iio_push_to_buffers_with_timestamp(indio_dev, &st->scan, 636 - iio_get_time_ns(indio_dev)); 635 + iio_push_to_buffers_with_ts(indio_dev, &st->scan, sizeof(st->scan), 636 + iio_get_time_ns(indio_dev)); 637 637 638 638 out: 639 639 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/max1363.c
··· 1498 1498 if (b_sent < 0) 1499 1499 goto done; 1500 1500 1501 - iio_push_to_buffers_with_timestamp(indio_dev, &st->data, 1502 - iio_get_time_ns(indio_dev)); 1501 + iio_push_to_buffers_with_ts(indio_dev, &st->data, sizeof(st->data), 1502 + iio_get_time_ns(indio_dev)); 1503 1503 1504 1504 done: 1505 1505 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/mcp3911.c
··· 516 516 adc->scan.channels[i] = get_unaligned_be24(&adc->rx_buf[scan_chan->channel * 3]); 517 517 i++; 518 518 } 519 - iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan, 520 - iio_get_time_ns(indio_dev)); 519 + iio_push_to_buffers_with_ts(indio_dev, &adc->scan, sizeof(adc->scan), 520 + iio_get_time_ns(indio_dev)); 521 521 out: 522 522 iio_trigger_notify_done(indio_dev->trig); 523 523
+2 -1
drivers/iio/adc/mxs-lradc-adc.c
··· 425 425 j++; 426 426 } 427 427 428 - iio_push_to_buffers_with_timestamp(iio, adc->buffer, pf->timestamp); 428 + iio_push_to_buffers_with_ts(iio, adc->buffer, sizeof(adc->buffer), 429 + pf->timestamp); 429 430 430 431 iio_trigger_notify_done(iio->trig); 431 432
+2 -1
drivers/iio/adc/pac1921.c
··· 1044 1044 priv->scan.chan[ch++] = val; 1045 1045 } 1046 1046 1047 - iio_push_to_buffers_with_timestamp(idev, &priv->scan, pf->timestamp); 1047 + iio_push_to_buffers_with_ts(idev, &priv->scan, sizeof(priv->scan), 1048 + pf->timestamp); 1048 1049 1049 1050 done: 1050 1051 iio_trigger_notify_done(idev->trig);
+2 -1
drivers/iio/adc/rockchip_saradc.c
··· 425 425 j++; 426 426 } 427 427 428 - iio_push_to_buffers_with_timestamp(i_dev, &data, iio_get_time_ns(i_dev)); 428 + iio_push_to_buffers_with_ts(i_dev, &data, sizeof(data), 429 + iio_get_time_ns(i_dev)); 429 430 out: 430 431 mutex_unlock(&info->lock); 431 432
+2 -1
drivers/iio/adc/rtq6056.c
··· 666 666 data.vals[i++] = raw; 667 667 } 668 668 669 - iio_push_to_buffers_with_timestamp(indio_dev, &data, iio_get_time_ns(indio_dev)); 669 + iio_push_to_buffers_with_ts(indio_dev, &data, sizeof(data), 670 + iio_get_time_ns(indio_dev)); 670 671 671 672 out: 672 673 pm_runtime_mark_last_busy(dev);
+2 -2
drivers/iio/adc/stm32-adc.c
··· 1858 1858 1859 1859 /* reset buffer index */ 1860 1860 adc->bufi = 0; 1861 - iio_push_to_buffers_with_timestamp(indio_dev, adc->buffer, 1862 - pf->timestamp); 1861 + iio_push_to_buffers_with_ts(indio_dev, adc->buffer, sizeof(adc->buffer), 1862 + pf->timestamp); 1863 1863 iio_trigger_notify_done(indio_dev->trig); 1864 1864 1865 1865 /* re-enable eoc irq */
+2 -2
drivers/iio/adc/ti-adc081c.c
··· 140 140 if (ret < 0) 141 141 goto out; 142 142 data->scan.channel = ret; 143 - iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, 144 - iio_get_time_ns(indio_dev)); 143 + iio_push_to_buffers_with_ts(indio_dev, &data->scan, sizeof(data->scan), 144 + iio_get_time_ns(indio_dev)); 145 145 out: 146 146 iio_trigger_notify_done(indio_dev->trig); 147 147 return IRQ_HANDLED;
+2 -2
drivers/iio/adc/ti-adc0832.c
··· 225 225 adc->data[i] = ret; 226 226 i++; 227 227 } 228 - iio_push_to_buffers_with_timestamp(indio_dev, adc->data, 229 - iio_get_time_ns(indio_dev)); 228 + iio_push_to_buffers_with_ts(indio_dev, adc->data, sizeof(adc->data), 229 + iio_get_time_ns(indio_dev)); 230 230 out: 231 231 mutex_unlock(&adc->lock); 232 232
+2 -2
drivers/iio/adc/ti-adc084s021.c
··· 151 151 if (adc084s021_adc_conversion(adc, adc->scan.channels) < 0) 152 152 dev_err(&adc->spi->dev, "Failed to read data\n"); 153 153 154 - iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan, 155 - iio_get_time_ns(indio_dev)); 154 + iio_push_to_buffers_with_ts(indio_dev, &adc->scan, sizeof(adc->scan), 155 + iio_get_time_ns(indio_dev)); 156 156 mutex_unlock(&adc->lock); 157 157 iio_trigger_notify_done(indio_dev->trig); 158 158
+2 -2
drivers/iio/adc/ti-adc12138.c
··· 376 376 } 377 377 } 378 378 379 - iio_push_to_buffers_with_timestamp(indio_dev, adc->data, 380 - iio_get_time_ns(indio_dev)); 379 + iio_push_to_buffers_with_ts(indio_dev, adc->data, sizeof(adc->data), 380 + iio_get_time_ns(indio_dev)); 381 381 out: 382 382 mutex_unlock(&adc->lock); 383 383
+2 -2
drivers/iio/adc/ti-ads1015.c
··· 467 467 scan.chan = res; 468 468 mutex_unlock(&data->lock); 469 469 470 - iio_push_to_buffers_with_timestamp(indio_dev, &scan, 471 - iio_get_time_ns(indio_dev)); 470 + iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan), 471 + iio_get_time_ns(indio_dev)); 472 472 473 473 err: 474 474 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/ti-ads1119.c
··· 534 534 535 535 scan.sample = ret; 536 536 537 - iio_push_to_buffers_with_timestamp(indio_dev, &scan, 538 - iio_get_time_ns(indio_dev)); 537 + iio_push_to_buffers_with_ts(indio_dev, &scan, sizeof(scan), 538 + iio_get_time_ns(indio_dev)); 539 539 done: 540 540 iio_trigger_notify_done(indio_dev->trig); 541 541 return IRQ_HANDLED;
+2 -2
drivers/iio/adc/ti-ads124s08.c
··· 297 297 j++; 298 298 } 299 299 300 - iio_push_to_buffers_with_timestamp(indio_dev, priv->buffer, 301 - pf->timestamp); 300 + iio_push_to_buffers_with_ts(indio_dev, priv->buffer, sizeof(priv->buffer), 301 + pf->timestamp); 302 302 303 303 iio_trigger_notify_done(indio_dev->trig); 304 304
+2 -2
drivers/iio/adc/ti-ads8688.c
··· 389 389 j++; 390 390 } 391 391 392 - iio_push_to_buffers_with_timestamp(indio_dev, buffer, 393 - iio_get_time_ns(indio_dev)); 392 + iio_push_to_buffers_with_ts(indio_dev, buffer, sizeof(buffer), 393 + iio_get_time_ns(indio_dev)); 394 394 395 395 iio_trigger_notify_done(indio_dev->trig); 396 396
+2 -2
drivers/iio/adc/ti-lmp92064.c
··· 209 209 if (ret) 210 210 goto err; 211 211 212 - iio_push_to_buffers_with_timestamp(indio_dev, &data, 213 - iio_get_time_ns(indio_dev)); 212 + iio_push_to_buffers_with_ts(indio_dev, &data, sizeof(data), 213 + iio_get_time_ns(indio_dev)); 214 214 215 215 err: 216 216 iio_trigger_notify_done(indio_dev->trig);
+2 -2
drivers/iio/adc/ti-tlc4541.c
··· 99 99 if (ret < 0) 100 100 goto done; 101 101 102 - iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf, 103 - iio_get_time_ns(indio_dev)); 102 + iio_push_to_buffers_with_ts(indio_dev, st->rx_buf, sizeof(st->rx_buf), 103 + iio_get_time_ns(indio_dev)); 104 104 105 105 done: 106 106 iio_trigger_notify_done(indio_dev->trig);
+3 -2
drivers/iio/adc/ti-tsc2046.c
··· 418 418 for (group = 0; group < priv->groups; group++) 419 419 priv->scan_buf.data[group] = tsc2046_adc_get_val(priv, group); 420 420 421 - ret = iio_push_to_buffers_with_timestamp(indio_dev, &priv->scan_buf, 422 - iio_get_time_ns(indio_dev)); 421 + ret = iio_push_to_buffers_with_ts(indio_dev, &priv->scan_buf, 422 + sizeof(priv->scan_buf), 423 + iio_get_time_ns(indio_dev)); 423 424 /* If the consumer is kfifo, we may get a EBUSY here - ignore it. */ 424 425 if (ret < 0 && ret != -EBUSY) { 425 426 dev_err_ratelimited(dev, "Failed to push scan buffer %pe\n",
+3 -3
drivers/iio/adc/vf610_adc.c
··· 592 592 info->value = vf610_adc_read_data(info); 593 593 if (iio_buffer_enabled(indio_dev)) { 594 594 info->scan.chan = info->value; 595 - iio_push_to_buffers_with_timestamp(indio_dev, 596 - &info->scan, 597 - iio_get_time_ns(indio_dev)); 595 + iio_push_to_buffers_with_ts(indio_dev, &info->scan, 596 + sizeof(info->scan), 597 + iio_get_time_ns(indio_dev)); 598 598 iio_trigger_notify_done(indio_dev->trig); 599 599 } else 600 600 complete(&info->completion);