Re: [PATCH v2 2/2] iio: accel: adxl367: reject out-of-range FIFO entry count
Jonathan Cameron <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260816015358.76f644f5@jic23-huawei> |
On Wed, 12 Aug 2026 11:08:43 +0300 Andy Shevchenko <[email protected]> wrote: > On Wed, Aug 12, 2026 at 03:58:50PM +0800, Shengzhuo Wei wrote: > > The FIFO entry count reported by the device can be as large as 1023 > > (the low byte plus the low two bits of the high byte), but fifo_buf[] > > only has room for ADXL367_FIFO_SIZE (512) entries. > > adxl367_push_fifo_data() passes the reported count straight to the FIFO > > read, so a count above ADXL367_FIFO_SIZE overflows fifo_buf, a heap > > out-of-bounds write of up to 1022 bytes into adjacent memory. > > > > Rather than clamp the count and silently drop the excess, abort the > > read: a count beyond the FIFO size means the device is returning > > garbage, so the data cannot be trusted. The message is ratelimited > > because a stuck device can raise the IRQ repeatedly. > > Aren't they already were discussed in linux-iio@ mailing list earlier? I'm lost. Yes it was discussed a few times, one of them in the v1 thread for this. Andy, can you be a bit more specific on what you mean here. I for one am half asleep today so could do with the pointer! > > ... > > > + dev_err_ratelimited(st->dev, > > + "FIFO entry count %u exceeds FIFO size %lu\n", > > + fifo_entries, > > + (unsigned long)ADXL367_FIFO_SIZE); > > In majority of the explicit castings when printing a message they are wrong or > unneeded. Use correct format specifiers to begin with. > This one I agree with - why would we print it as a long unsigned given it is the constant 512?