On 3/29/19 12:04 PM, Takashi Iwai wrote:
On Thu, 21 Mar 2019 17:10:05 +0100,
Pierre-Louis Bossart wrote:
+static ssize_t sof_dfsentry_read(struct file *file, char __user *buffer,
+ size_t count, loff_t *ppos)
+{
+ struct snd_sof_dfsentry *dfse = file->private_data;
+ struct snd_sof_dev *sdev = dfse->sdev;
+ int size;
+ u32 *buf;
+ loff_t pos = *ppos;
+ size_t size_ret;
+
+ size = dfse->size;
+
+ /* validate position & count */
+ if (pos < 0)
+ return -EINVAL;
+ if (pos >= size || !count)
+ return 0;
+ /* find the minimum. min() is not used since it adds sparse warnings */
+ if (count > size - pos)
+ count = size - pos;
+
+ /* intermediate buffer size must be u32 multiple */
+ size = ALIGN(count, 4);
Doesn't pos need to be aligned to 32bit as well (at least at actually
reading from iomem)?
Good point, we can either return an error if the count in both a
multiple of 32 bits, or do some caching to allow for arbitrary size
access. The former is very simple but not sure if this is accepted
behavior for debugfs.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel