Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1033337AbdD0Ab4 (ORCPT ); Wed, 26 Apr 2017 20:31:56 -0400 Received: from blatinox.fr ([51.254.120.209]:37640 "EHLO vps202351.ovh.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1033219AbdD0Abs (ORCPT ); Wed, 26 Apr 2017 20:31:48 -0400 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lefaure?= To: Andy Shevchenko , David Howells Cc: linux-doc@vger.kernel.org, Jonathan Corbet , linux-cachefs@redhat.com, linux-kernel@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=A9my=20Lefaure?= Subject: [PATCH v2] FS-Cache: fix buffer size for decimal value of special cookie type Date: Wed, 26 Apr 2017 20:31:38 -0400 Message-Id: <20170427003138.6977-1-jeremy.lefaure@lse.epita.fr> X-Mailer: git-send-email 2.12.2 In-Reply-To: <20170419203819.21951-1-jeremy.lefaure@lse.epita.fr> References: <20170419203819.21951-1-jeremy.lefaure@lse.epita.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3309 Lines: 89 When building object-list.o, gcc (version 7) raises a warning on the sprintf call in fscache_objlist_show: CC fs/fscache/object-list.o fs/fscache/object-list.c: In function ‘fscache_objlist_show’: fs/fscache/object-list.c:265:19: warning: ‘sprintf’ may write a terminating nul past the end of the destination [-Wformat-overflow=] sprintf(_type, "%02u", cookie->def->type); ^~~~~~ fs/fscache/object-list.c:265:4: note: ‘sprintf’ output between 3 and 4 bytes into a destination of size 3 sprintf(_type, "%02u", cookie->def->type); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Moreover, the documentation says that value for special cookies is a hexadecimal value (see Documentation/filesystems/caching/fscache.txt). Increasing the buffer size to use a decimal value fixes the problem without any effect on userland tools. Also, this patch updates the documentation. Signed-off-by: Jérémy Lefaure --- v2: _ keep decimal value _ fix _type buffer size _ fix documentation I didn't have the time to test this patch yet but everything should be fine. Documentation/filesystems/caching/fscache.txt | 2 +- fs/fscache/object-list.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/filesystems/caching/fscache.txt b/Documentation/filesystems/caching/fscache.txt index 50f0a5757f48..9c3df61b3c16 100644 --- a/Documentation/filesystems/caching/fscache.txt +++ b/Documentation/filesystems/caching/fscache.txt @@ -374,7 +374,7 @@ and the second set of columns describe the object's cookie, if present: COLUMN DESCRIPTION =============== ======================================================= NETFS_COOKIE_DEF Name of netfs cookie definition - TY Cookie type (IX - index, DT - data, hex - special) + TY Cookie type (IX - index, DT - data, decimal - special) FL Cookie flags NETFS_DATA Netfs private data stored in the cookie OBJECT_KEY Object key } 1 column, with separating comma diff --git a/fs/fscache/object-list.c b/fs/fscache/object-list.c index 67f940892ef8..3452d7dbf1e1 100644 --- a/fs/fscache/object-list.c +++ b/fs/fscache/object-list.c @@ -169,7 +169,7 @@ static int fscache_objlist_show(struct seq_file *m, void *v) struct fscache_object *obj = v; struct fscache_cookie *cookie; unsigned long config = data->config; - char _type[3], *type; + char _type[4], *type; u8 *buf = data->buf, *p; if ((unsigned long) v == 1) { @@ -194,7 +194,7 @@ static int fscache_objlist_show(struct seq_file *m, void *v) if ((unsigned long) v == 2) { seq_puts(m, "======== ======== ==== ===== === === === == =====" " == == == =" - " | ================ == == ================"); + " | ================ === == ================"); if (config & (FSCACHE_OBJLIST_CONFIG_KEY | FSCACHE_OBJLIST_CONFIG_AUX)) seq_puts(m, " ================"); @@ -256,13 +256,13 @@ static int fscache_objlist_show(struct seq_file *m, void *v) switch (cookie->def->type) { case 0: - type = "IX"; + type = " IX"; break; case 1: - type = "DT"; + type = " DT"; break; default: - sprintf(_type, "%02u", cookie->def->type); + sprintf(_type, "%03u", cookie->def->type); type = _type; break; } -- 2.12.2