mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-04-13 09:59:31 +00:00
9p/net: return error on bogus (longer than requested) replies
Up until now we've been considering longer than requested replies as acceptable, printing a message and just truncating the data, but it makes more sense to consider these an error. Make these fail with EIO instead. Suggested-by: Christian Schoenebeck <linux_oss@crudebyte.com> Message-ID: <20250317-p9_bogus_io_error-v1-1-9639f6d1561f@codewreck.org> Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
This commit is contained in:
parent
d0259a856a
commit
ad6d4558a7
1 changed files with 10 additions and 4 deletions
|
@ -1594,7 +1594,9 @@ p9_client_read_once(struct p9_fid *fid, u64 offset, struct iov_iter *to,
|
|||
}
|
||||
if (rsize < received) {
|
||||
pr_err("bogus RREAD count (%u > %u)\n", received, rsize);
|
||||
received = rsize;
|
||||
*err = -EIO;
|
||||
p9_req_put(clnt, req);
|
||||
return 0;
|
||||
}
|
||||
|
||||
p9_debug(P9_DEBUG_9P, "<<< RREAD count %u\n", received);
|
||||
|
@ -1661,7 +1663,10 @@ p9_client_write(struct p9_fid *fid, u64 offset, struct iov_iter *from, int *err)
|
|||
}
|
||||
if (rsize < written) {
|
||||
pr_err("bogus RWRITE count (%u > %u)\n", written, rsize);
|
||||
written = rsize;
|
||||
*err = -EIO;
|
||||
iov_iter_revert(from, count - iov_iter_count(from));
|
||||
p9_req_put(clnt, req);
|
||||
break;
|
||||
}
|
||||
|
||||
p9_debug(P9_DEBUG_9P, "<<< RWRITE count %u\n", written);
|
||||
|
@ -1713,7 +1718,7 @@ p9_client_write_subreq(struct netfs_io_subrequest *subreq)
|
|||
|
||||
if (written > len) {
|
||||
pr_err("bogus RWRITE count (%d > %u)\n", written, len);
|
||||
written = len;
|
||||
written = -EIO;
|
||||
}
|
||||
|
||||
p9_debug(P9_DEBUG_9P, "<<< RWRITE count %d\n", len);
|
||||
|
@ -2145,7 +2150,8 @@ int p9_client_readdir(struct p9_fid *fid, char *data, u32 count, u64 offset)
|
|||
}
|
||||
if (rsize < count) {
|
||||
pr_err("bogus RREADDIR count (%u > %u)\n", count, rsize);
|
||||
count = rsize;
|
||||
err = -EIO;
|
||||
goto free_and_error;
|
||||
}
|
||||
|
||||
p9_debug(P9_DEBUG_9P, "<<< RREADDIR count %u\n", count);
|
||||
|
|
Loading…
Add table
Reference in a new issue