[PATCH 2/2] net/9p: fix response size check in p9_check_errors()

From: Christian Schoenebeck
Date: Mon Nov 21 2022 - 18:56:23 EST


Since 60ece0833b6c (net/9p: allocate appropriate reduced message buffers)
it is no longer appropriate to check server's response size against
msize. Check against the previously allocated buffer capacity instead.

- Omit this size check entirely for zero-copy messages, as those always
allocate 4k (P9_ZC_HDR_SZ) linear buffers which are not used for actual
payload and can be much bigger than 4k.

- Replace p9_debug() by pr_err() to make sure this message is always
printed in case this error is triggered.

- Add 9p message type to error message to ease investigation.

Signed-off-by: Christian Schoenebeck <linux_oss@xxxxxxxxxxxxx>
---
net/9p/client.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/9p/client.c b/net/9p/client.c
index 30dd82f49b28..63f13dd1ecff 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -514,10 +514,10 @@ static int p9_check_errors(struct p9_client *c, struct p9_req_t *req)
int ecode;

err = p9_parse_header(&req->rc, NULL, &type, NULL, 0);
- if (req->rc.size >= c->msize) {
- p9_debug(P9_DEBUG_ERROR,
- "requested packet size too big: %d\n",
- req->rc.size);
+ if (req->rc.size > req->rc.capacity && !req->rc.zc) {
+ pr_err(
+ "requested packet size too big: %d does not fit %ld (type=%d)\n",
+ req->rc.size, req->rc.capacity, req->rc.id);
return -EIO;
}
/* dump the response from server
--
2.30.2