• Bart Van Assche's avatar
    configfs: fix the read and write iterators · 420405ec
    Bart Van Assche authored
    Commit 7fe1e79b ("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: default avatarYanko Kaneti <yaneti@declera.com>
    Cc: Yanko Kaneti <yaneti@declera.com>
    Fixes: 7fe1e79b ("configfs: implement the .read_iter and .write_iter methods")
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    420405ec
file.c 12.1 KB