From: "Randall P. Embry" rpembry@gmail.com
[ Upstream commit 86db0c32f16c5538ddb740f54669ace8f3a1f3d7 ]
caches_show() overwrote its buffer on each iteration, so only the last cache tag was visible in sysfs output.
Properly append with snprintf(buf + count, …).
Signed-off-by: Randall P. Embry rpembry@gmail.com Message-ID: 20250926-v9fs_misc-v1-2-a8b3907fc04d@codewreck.org Signed-off-by: Dominique Martinet asmadeus@codewreck.org Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
YES. The change in `fs/9p/v9fs.c:563` switches the sysfs formatter from `snprintf(buf, …)` to `snprintf(buf + count, …)`, so each cache tag is appended rather than overwriting the start of the buffer. Without this adjustment, `/sys/fs/9p/caches` only ever reported the final cache tag, which is a real user-visible bug for multi-session configurations and makes the sysfs knob effectively unusable. The fix is a one-line adjustment behind `CONFIG_9P_FSCACHE`, touches no other logic, and keeps the existing `count`/`limit` bookkeeping, so the regression risk is negligible. There are no prerequisites or follow-up changes in this area, making it an ideal low-risk candidate for the stable trees.
fs/9p/v9fs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c index 77e9c4387c1df..714cfe76ee651 100644 --- a/fs/9p/v9fs.c +++ b/fs/9p/v9fs.c @@ -561,7 +561,7 @@ static ssize_t caches_show(struct kobject *kobj, spin_lock(&v9fs_sessionlist_lock); list_for_each_entry(v9ses, &v9fs_sessionlist, slist) { if (v9ses->cachetag) { - n = snprintf(buf, limit, "%s\n", v9ses->cachetag); + n = snprintf(buf + count, limit, "%s\n", v9ses->cachetag); if (n < 0) { count = n; break;