]> git.baikalelectronics.ru Git - kernel.git/commit
configfs: fix the read and write iterators
authorBart Van Assche <bvanassche@acm.org>
Tue, 13 Jul 2021 17:49:26 +0000 (10:49 -0700)
committerChristoph Hellwig <hch@lst.de>
Tue, 13 Jul 2021 18:56:24 +0000 (20:56 +0200)
commitaeb7a1b26c17b91c79b9e7ae32334254fd701495
tree4b90dc0236356bd18fbeb2dcced201122081e33d
parent35750f539a9d68b1be0b1579982736db4ba56a7b
configfs: fix the read and write iterators

Commit 5c910a987829 ("configfs: implement the .read_iter and .write_iter
methods") changed the simple_read_from_buffer() calls into copy_to_iter()
calls and the simple_write_to_buffer() calls into copy_from_iter() calls.
The simple*buffer() methods update the file offset (*ppos) but the read
and write iterators not yet. Make the read and write iterators update the
file offset (iocb->ki_pos).

This patch has been tested as follows:

 # modprobe target_core_user
 # dd if=/sys/kernel/config/target/dbroot bs=1
/var/target
12+0 records in
12+0 records out
12 bytes copied, 9.5539e-05 s, 126 kB/s

 # cd /sys/kernel/config/acpi/table
 # mkdir test
 # cd test
 # dmesg -c >/dev/null; printf 'SSDT\x8\0\0\0abcdefghijklmnopqrstuvwxyz' | dd of=aml bs=1; dmesg -c
34+0 records in
34+0 records out
34 bytes copied, 0.010627 s, 3.2 kB/s
[  261.056551] ACPI configfs: invalid table length

Reported-by: Yanko Kaneti <yaneti@declera.com>
Cc: Yanko Kaneti <yaneti@declera.com>
Fixes: 5c910a987829 ("configfs: implement the .read_iter and .write_iter methods")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/configfs/file.c