diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index 0b4eb5f78356332f9172d98ecc4f7140623112bc..d652baf5ff919c422664ed8890996d9f71beadc1 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -870,8 +870,10 @@ static struct p9_req *p9_send_request(struct p9_conn *m,
 	else
 		n = p9_mux_get_tag(m);
 
-	if (n < 0)
+	if (n < 0) {
+		kfree(req);
 		return ERR_PTR(-ENOMEM);
+	}
 
 	p9_set_tag(tc, n);