kernfs: fix regression in kernfs_fop_write caused by wrong type
commit ba87977a49913129962af8ac35b0e13e0fa4382d upstream. Commitb7ce40cff0
("kernfs: cache atomic_write_len in kernfs_open_file") changes type of local variable 'len' from ssize_t to size_t. This change caused that the *ppos value is updated also when the previous write callback failed. Mentioned snippet: ... len = ops->write(...); <- return value can be negative ... if (len > 0) <- true here in this case *ppos += len; ... Fixes:b7ce40cff0
("kernfs: cache atomic_write_len in kernfs_open_file") Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Ivan Vecera <ivecera@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fb8b16859a
commit
f1db1b8055
1 changed files with 1 additions and 1 deletions
|
@ -272,7 +272,7 @@ static ssize_t kernfs_fop_write(struct file *file, const char __user *user_buf,
|
||||||
{
|
{
|
||||||
struct kernfs_open_file *of = kernfs_of(file);
|
struct kernfs_open_file *of = kernfs_of(file);
|
||||||
const struct kernfs_ops *ops;
|
const struct kernfs_ops *ops;
|
||||||
size_t len;
|
ssize_t len;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
if (of->atomic_write_len) {
|
if (of->atomic_write_len) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue