block, bfq: return nbytes and not zero from struct cftype .write() method
authorMaciej S. Szmigiero <mail@maciej.szmigiero.name>
Wed, 15 Aug 2018 21:56:45 +0000 (23:56 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 16 Aug 2018 19:11:16 +0000 (13:11 -0600)
The value that struct cftype .write() method returns is then directly
returned to userspace as the value returned by write() syscall, so it
should be the number of bytes actually written (or consumed) and not zero.

Returning zero from write() syscall makes programs like /bin/echo or bash
spin.

Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Fixes: e21b7a0b9887 ("block, bfq: add full hierarchical scheduling and cgroups support")
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bfq-cgroup.c

index a9e8633388f40985a0a49246a1e95c37def3cc8f..58c6efa9f9a99970e7599b673df3f65f5f4a9810 100644 (file)
@@ -913,7 +913,8 @@ static ssize_t bfq_io_set_weight(struct kernfs_open_file *of,
        if (ret)
                return ret;
 
-       return bfq_io_set_weight_legacy(of_css(of), NULL, weight);
+       ret = bfq_io_set_weight_legacy(of_css(of), NULL, weight);
+       return ret ?: nbytes;
 }
 
 #ifdef CONFIG_DEBUG_BLK_CGROUP