All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@kernel.org>
To: linux-kernel@vger.kernel.org, Martin Sebor <msebor@gcc.gnu.org>,
	Anders Larsen <al@alarsen.net>
Cc: Arnd Bergmann <arnd@arndb.de>,
	x86@kernel.org, Ning Sun <ning.sun@intel.com>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Kalle Valo <kvalo@codeaurora.org>,
	Simon Kelley <simon@thekelleys.org.uk>,
	James Smart <james.smart@broadcom.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	Tejun Heo <tj@kernel.org>, Serge Hallyn <serge@hallyn.com>,
	Imre Deak <imre.deak@intel.com>,
	linux-arm-kernel@lists.infradead.org,
	tboot-devel@lists.sourceforge.net,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	ath11k@lists.infradead.org, linux-wireless@vger.kernel.org,
	netdev@vger.kernel.org, linux-scsi@vger.kernel.org,
	cgroups@vger.kernel.org, linux-security-module@vger.kernel.org
Subject: [PATCH 05/11] qnx: avoid -Wstringop-overread warning
Date: Mon, 22 Mar 2021 17:02:43 +0100	[thread overview]
Message-ID: <20210322160253.4032422-6-arnd@kernel.org> (raw)
In-Reply-To: <20210322160253.4032422-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

gcc-11 warns that the size of the link name is longer than the di_fname
field:

fs/qnx4/dir.c: In function ‘qnx4_readdir’:
fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
   51 |                         size = strnlen(de->di_fname, size);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/qnx4/qnx4.h:3,
                 from fs/qnx4/dir.c:16:
include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
   45 |         char            di_fname[QNX4_SHORT_NAME_MAX];

The problem here is that we access the same pointer using two different
structure layouts, but gcc determines the object size based on
whatever it encounters first.

Change the strnlen to use the correct field size in each case, and
change the first access to be on the longer field.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/qnx4/dir.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index a6ee23aadd28..68046450e543 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -39,21 +39,20 @@ static int qnx4_readdir(struct file *file, struct dir_context *ctx)
 		ix = (ctx->pos >> QNX4_DIR_ENTRY_SIZE_BITS) % QNX4_INODES_PER_BLOCK;
 		for (; ix < QNX4_INODES_PER_BLOCK; ix++, ctx->pos += QNX4_DIR_ENTRY_SIZE) {
 			offset = ix * QNX4_DIR_ENTRY_SIZE;
-			de = (struct qnx4_inode_entry *) (bh->b_data + offset);
-			if (!de->di_fname[0])
+			le = (struct qnx4_link_info *)(bh->b_data + offset);
+			de = (struct qnx4_inode_entry *)(bh->b_data + offset);
+			if (!le->dl_fname[0])
 				continue;
 			if (!(de->di_status & (QNX4_FILE_USED|QNX4_FILE_LINK)))
 				continue;
 			if (!(de->di_status & QNX4_FILE_LINK))
-				size = QNX4_SHORT_NAME_MAX;
+				size = strnlen(de->di_fname, sizeof(de->di_fname));
 			else
-				size = QNX4_NAME_MAX;
-			size = strnlen(de->di_fname, size);
+				size = strnlen(le->dl_fname, sizeof(le->dl_fname));
 			QNX4DEBUG((KERN_INFO "qnx4_readdir:%.*s\n", size, de->di_fname));
 			if (!(de->di_status & QNX4_FILE_LINK))
 				ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
 			else {
-				le  = (struct qnx4_link_info*)de;
 				ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
 					QNX4_INODES_PER_BLOCK +
 					le->dl_inode_ndx;
-- 
2.29.2


WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@kernel.org>
To: linux-kernel@vger.kernel.org, Martin Sebor <msebor@gcc.gnu.org>,
	Anders Larsen <al@alarsen.net>
Cc: Arnd Bergmann <arnd@arndb.de>,
	x86@kernel.org, Ning Sun <ning.sun@intel.com>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Kalle Valo <kvalo@codeaurora.org>,
	Simon Kelley <simon@thekelleys.org.uk>,
	James Smart <james.smart@broadcom.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	Tejun Heo <tj@kernel.org>, Serge Hallyn <serge@hallyn.com>,
	Imre Deak <imre.deak@intel.com>,
	linux-arm-kernel@lists.infradead.org,
	tboot-devel@lists.sourceforge.net,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	ath11k@lists.infradead.org, linux-wireless@vger.kernel.org,
	netdev@vger.kernel.org, linux-scsi@vger.kernel.org,
	cgroups@vger.kernel.org, linux-security-module@vger.kernel.org
Subject: [PATCH 05/11] qnx: avoid -Wstringop-overread warning
Date: Mon, 22 Mar 2021 17:02:43 +0100	[thread overview]
Message-ID: <20210322160253.4032422-6-arnd@kernel.org> (raw)
In-Reply-To: <20210322160253.4032422-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

gcc-11 warns that the size of the link name is longer than the di_fname
field:

fs/qnx4/dir.c: In function ‘qnx4_readdir’:
fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
   51 |                         size = strnlen(de->di_fname, size);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/qnx4/qnx4.h:3,
                 from fs/qnx4/dir.c:16:
include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
   45 |         char            di_fname[QNX4_SHORT_NAME_MAX];

The problem here is that we access the same pointer using two different
structure layouts, but gcc determines the object size based on
whatever it encounters first.

Change the strnlen to use the correct field size in each case, and
change the first access to be on the longer field.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/qnx4/dir.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index a6ee23aadd28..68046450e543 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -39,21 +39,20 @@ static int qnx4_readdir(struct file *file, struct dir_context *ctx)
 		ix = (ctx->pos >> QNX4_DIR_ENTRY_SIZE_BITS) % QNX4_INODES_PER_BLOCK;
 		for (; ix < QNX4_INODES_PER_BLOCK; ix++, ctx->pos += QNX4_DIR_ENTRY_SIZE) {
 			offset = ix * QNX4_DIR_ENTRY_SIZE;
-			de = (struct qnx4_inode_entry *) (bh->b_data + offset);
-			if (!de->di_fname[0])
+			le = (struct qnx4_link_info *)(bh->b_data + offset);
+			de = (struct qnx4_inode_entry *)(bh->b_data + offset);
+			if (!le->dl_fname[0])
 				continue;
 			if (!(de->di_status & (QNX4_FILE_USED|QNX4_FILE_LINK)))
 				continue;
 			if (!(de->di_status & QNX4_FILE_LINK))
-				size = QNX4_SHORT_NAME_MAX;
+				size = strnlen(de->di_fname, sizeof(de->di_fname));
 			else
-				size = QNX4_NAME_MAX;
-			size = strnlen(de->di_fname, size);
+				size = strnlen(le->dl_fname, sizeof(le->dl_fname));
 			QNX4DEBUG((KERN_INFO "qnx4_readdir:%.*s\n", size, de->di_fname));
 			if (!(de->di_status & QNX4_FILE_LINK))
 				ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
 			else {
-				le  = (struct qnx4_link_info*)de;
 				ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
 					QNX4_INODES_PER_BLOCK +
 					le->dl_inode_ndx;
-- 
2.29.2


-- 
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@kernel.org>
To: linux-kernel@vger.kernel.org, Martin Sebor <msebor@gcc.gnu.org>,
	Anders Larsen <al@alarsen.net>
Cc: Arnd Bergmann <arnd@arndb.de>,
	x86@kernel.org, Ning Sun <ning.sun@intel.com>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Kalle Valo <kvalo@codeaurora.org>,
	Simon Kelley <simon@thekelleys.org.uk>,
	James Smart <james.smart@broadcom.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	Tejun Heo <tj@kernel.org>, Serge Hallyn <serge@hallyn.com>,
	Imre Deak <imre.deak@intel.com>,
	linux-arm-kernel@lists.infradead.org,
	tboot-devel@lists.sourceforge.net,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	ath11k@lists.infradead.org, linux-wireless@vger.kernel.org,
	netdev@vger.kernel.org, linux-scsi@vger.kernel.org,
	cgroups@vger.kernel.org, linux-security-module@vger.kernel.org
Subject: [PATCH 05/11] qnx: avoid -Wstringop-overread warning
Date: Mon, 22 Mar 2021 17:02:43 +0100	[thread overview]
Message-ID: <20210322160253.4032422-6-arnd@kernel.org> (raw)
In-Reply-To: <20210322160253.4032422-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

gcc-11 warns that the size of the link name is longer than the di_fname
field:

fs/qnx4/dir.c: In function ‘qnx4_readdir’:
fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
   51 |                         size = strnlen(de->di_fname, size);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/qnx4/qnx4.h:3,
                 from fs/qnx4/dir.c:16:
include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
   45 |         char            di_fname[QNX4_SHORT_NAME_MAX];

The problem here is that we access the same pointer using two different
structure layouts, but gcc determines the object size based on
whatever it encounters first.

Change the strnlen to use the correct field size in each case, and
change the first access to be on the longer field.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/qnx4/dir.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index a6ee23aadd28..68046450e543 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -39,21 +39,20 @@ static int qnx4_readdir(struct file *file, struct dir_context *ctx)
 		ix = (ctx->pos >> QNX4_DIR_ENTRY_SIZE_BITS) % QNX4_INODES_PER_BLOCK;
 		for (; ix < QNX4_INODES_PER_BLOCK; ix++, ctx->pos += QNX4_DIR_ENTRY_SIZE) {
 			offset = ix * QNX4_DIR_ENTRY_SIZE;
-			de = (struct qnx4_inode_entry *) (bh->b_data + offset);
-			if (!de->di_fname[0])
+			le = (struct qnx4_link_info *)(bh->b_data + offset);
+			de = (struct qnx4_inode_entry *)(bh->b_data + offset);
+			if (!le->dl_fname[0])
 				continue;
 			if (!(de->di_status & (QNX4_FILE_USED|QNX4_FILE_LINK)))
 				continue;
 			if (!(de->di_status & QNX4_FILE_LINK))
-				size = QNX4_SHORT_NAME_MAX;
+				size = strnlen(de->di_fname, sizeof(de->di_fname));
 			else
-				size = QNX4_NAME_MAX;
-			size = strnlen(de->di_fname, size);
+				size = strnlen(le->dl_fname, sizeof(le->dl_fname));
 			QNX4DEBUG((KERN_INFO "qnx4_readdir:%.*s\n", size, de->di_fname));
 			if (!(de->di_status & QNX4_FILE_LINK))
 				ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
 			else {
-				le  = (struct qnx4_link_info*)de;
 				ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
 					QNX4_INODES_PER_BLOCK +
 					le->dl_inode_ndx;
-- 
2.29.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@kernel.org>
To: linux-kernel@vger.kernel.org, Martin Sebor <msebor@gcc.gnu.org>,
	Anders Larsen <al@alarsen.net>
Cc: linux-security-module@vger.kernel.org,
	dri-devel@lists.freedesktop.org, Arnd Bergmann <arnd@arndb.de>,
	netdev@vger.kernel.org,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	x86@kernel.org, linux-wireless@vger.kernel.org,
	James Smart <james.smart@broadcom.com>,
	ath11k@lists.infradead.org, Ning Sun <ning.sun@intel.com>,
	tboot-devel@lists.sourceforge.net,
	linux-arm-kernel@lists.infradead.org, cgroups@vger.kernel.org,
	linux-scsi@vger.kernel.org, Tejun Heo <tj@kernel.org>,
	Simon Kelley <simon@thekelleys.org.uk>,
	intel-gfx@lists.freedesktop.org,
	Kalle Valo <kvalo@codeaurora.org>,
	Serge Hallyn <serge@hallyn.com>
Subject: [PATCH 05/11] qnx: avoid -Wstringop-overread warning
Date: Mon, 22 Mar 2021 17:02:43 +0100	[thread overview]
Message-ID: <20210322160253.4032422-6-arnd@kernel.org> (raw)
In-Reply-To: <20210322160253.4032422-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

gcc-11 warns that the size of the link name is longer than the di_fname
field:

fs/qnx4/dir.c: In function ‘qnx4_readdir’:
fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
   51 |                         size = strnlen(de->di_fname, size);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/qnx4/qnx4.h:3,
                 from fs/qnx4/dir.c:16:
include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
   45 |         char            di_fname[QNX4_SHORT_NAME_MAX];

The problem here is that we access the same pointer using two different
structure layouts, but gcc determines the object size based on
whatever it encounters first.

Change the strnlen to use the correct field size in each case, and
change the first access to be on the longer field.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/qnx4/dir.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index a6ee23aadd28..68046450e543 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -39,21 +39,20 @@ static int qnx4_readdir(struct file *file, struct dir_context *ctx)
 		ix = (ctx->pos >> QNX4_DIR_ENTRY_SIZE_BITS) % QNX4_INODES_PER_BLOCK;
 		for (; ix < QNX4_INODES_PER_BLOCK; ix++, ctx->pos += QNX4_DIR_ENTRY_SIZE) {
 			offset = ix * QNX4_DIR_ENTRY_SIZE;
-			de = (struct qnx4_inode_entry *) (bh->b_data + offset);
-			if (!de->di_fname[0])
+			le = (struct qnx4_link_info *)(bh->b_data + offset);
+			de = (struct qnx4_inode_entry *)(bh->b_data + offset);
+			if (!le->dl_fname[0])
 				continue;
 			if (!(de->di_status & (QNX4_FILE_USED|QNX4_FILE_LINK)))
 				continue;
 			if (!(de->di_status & QNX4_FILE_LINK))
-				size = QNX4_SHORT_NAME_MAX;
+				size = strnlen(de->di_fname, sizeof(de->di_fname));
 			else
-				size = QNX4_NAME_MAX;
-			size = strnlen(de->di_fname, size);
+				size = strnlen(le->dl_fname, sizeof(le->dl_fname));
 			QNX4DEBUG((KERN_INFO "qnx4_readdir:%.*s\n", size, de->di_fname));
 			if (!(de->di_status & QNX4_FILE_LINK))
 				ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
 			else {
-				le  = (struct qnx4_link_info*)de;
 				ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
 					QNX4_INODES_PER_BLOCK +
 					le->dl_inode_ndx;
-- 
2.29.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@kernel.org>
To: linux-kernel@vger.kernel.org, Martin Sebor <msebor@gcc.gnu.org>,
	Anders Larsen <al@alarsen.net>
Cc: linux-security-module@vger.kernel.org,
	dri-devel@lists.freedesktop.org, Arnd Bergmann <arnd@arndb.de>,
	netdev@vger.kernel.org,
	"James E.J. Bottomley" <jejb@linux.ibm.com>,
	x86@kernel.org, linux-wireless@vger.kernel.org,
	James Smart <james.smart@broadcom.com>,
	ath11k@lists.infradead.org, Ning Sun <ning.sun@intel.com>,
	tboot-devel@lists.sourceforge.net,
	linux-arm-kernel@lists.infradead.org, cgroups@vger.kernel.org,
	linux-scsi@vger.kernel.org, Tejun Heo <tj@kernel.org>,
	Simon Kelley <simon@thekelleys.org.uk>,
	intel-gfx@lists.freedesktop.org,
	Kalle Valo <kvalo@codeaurora.org>,
	Serge Hallyn <serge@hallyn.com>
Subject: [Intel-gfx] [PATCH 05/11] qnx: avoid -Wstringop-overread warning
Date: Mon, 22 Mar 2021 17:02:43 +0100	[thread overview]
Message-ID: <20210322160253.4032422-6-arnd@kernel.org> (raw)
In-Reply-To: <20210322160253.4032422-1-arnd@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

gcc-11 warns that the size of the link name is longer than the di_fname
field:

fs/qnx4/dir.c: In function ‘qnx4_readdir’:
fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
   51 |                         size = strnlen(de->di_fname, size);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/qnx4/qnx4.h:3,
                 from fs/qnx4/dir.c:16:
include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
   45 |         char            di_fname[QNX4_SHORT_NAME_MAX];

The problem here is that we access the same pointer using two different
structure layouts, but gcc determines the object size based on
whatever it encounters first.

Change the strnlen to use the correct field size in each case, and
change the first access to be on the longer field.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/qnx4/dir.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index a6ee23aadd28..68046450e543 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -39,21 +39,20 @@ static int qnx4_readdir(struct file *file, struct dir_context *ctx)
 		ix = (ctx->pos >> QNX4_DIR_ENTRY_SIZE_BITS) % QNX4_INODES_PER_BLOCK;
 		for (; ix < QNX4_INODES_PER_BLOCK; ix++, ctx->pos += QNX4_DIR_ENTRY_SIZE) {
 			offset = ix * QNX4_DIR_ENTRY_SIZE;
-			de = (struct qnx4_inode_entry *) (bh->b_data + offset);
-			if (!de->di_fname[0])
+			le = (struct qnx4_link_info *)(bh->b_data + offset);
+			de = (struct qnx4_inode_entry *)(bh->b_data + offset);
+			if (!le->dl_fname[0])
 				continue;
 			if (!(de->di_status & (QNX4_FILE_USED|QNX4_FILE_LINK)))
 				continue;
 			if (!(de->di_status & QNX4_FILE_LINK))
-				size = QNX4_SHORT_NAME_MAX;
+				size = strnlen(de->di_fname, sizeof(de->di_fname));
 			else
-				size = QNX4_NAME_MAX;
-			size = strnlen(de->di_fname, size);
+				size = strnlen(le->dl_fname, sizeof(le->dl_fname));
 			QNX4DEBUG((KERN_INFO "qnx4_readdir:%.*s\n", size, de->di_fname));
 			if (!(de->di_status & QNX4_FILE_LINK))
 				ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
 			else {
-				le  = (struct qnx4_link_info*)de;
 				ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
 					QNX4_INODES_PER_BLOCK +
 					le->dl_inode_ndx;
-- 
2.29.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Martin Sebor <msebor-/MQLu3FmUzdAfugRpC6u6w@public.gmane.org>,
	Anders Larsen <al-V9/YLgxv/GvR7s880joybQ@public.gmane.org>
Cc: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	Ning Sun <ning.sun-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Jani Nikula <jani.nikula-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Kalle Valo <kvalo-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Simon Kelley
	<simon-xn1N/tgparsycpQjotevgVpr/1R2p/CL@public.gmane.org>,
	James Smart <james.smart-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
	"James E.J. Bottomley"
	<jejb-tEXmvtCZX7AybS5Ee8rs3A@public.gmane.org>,
	Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Serge Hallyn <serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>,
	Imre Deak <imre.deak-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	tboot-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	ath11k-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH 05/11] qnx: avoid -Wstringop-overread warning
Date: Mon, 22 Mar 2021 17:02:43 +0100	[thread overview]
Message-ID: <20210322160253.4032422-6-arnd@kernel.org> (raw)
In-Reply-To: <20210322160253.4032422-1-arnd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>

From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>

gcc-11 warns that the size of the link name is longer than the di_fname
field:

fs/qnx4/dir.c: In function ‘qnx4_readdir’:
fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
   51 |                         size = strnlen(de->di_fname, size);
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/qnx4/qnx4.h:3,
                 from fs/qnx4/dir.c:16:
include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
   45 |         char            di_fname[QNX4_SHORT_NAME_MAX];

The problem here is that we access the same pointer using two different
structure layouts, but gcc determines the object size based on
whatever it encounters first.

Change the strnlen to use the correct field size in each case, and
change the first access to be on the longer field.

Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
Signed-off-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
---
 fs/qnx4/dir.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c
index a6ee23aadd28..68046450e543 100644
--- a/fs/qnx4/dir.c
+++ b/fs/qnx4/dir.c
@@ -39,21 +39,20 @@ static int qnx4_readdir(struct file *file, struct dir_context *ctx)
 		ix = (ctx->pos >> QNX4_DIR_ENTRY_SIZE_BITS) % QNX4_INODES_PER_BLOCK;
 		for (; ix < QNX4_INODES_PER_BLOCK; ix++, ctx->pos += QNX4_DIR_ENTRY_SIZE) {
 			offset = ix * QNX4_DIR_ENTRY_SIZE;
-			de = (struct qnx4_inode_entry *) (bh->b_data + offset);
-			if (!de->di_fname[0])
+			le = (struct qnx4_link_info *)(bh->b_data + offset);
+			de = (struct qnx4_inode_entry *)(bh->b_data + offset);
+			if (!le->dl_fname[0])
 				continue;
 			if (!(de->di_status & (QNX4_FILE_USED|QNX4_FILE_LINK)))
 				continue;
 			if (!(de->di_status & QNX4_FILE_LINK))
-				size = QNX4_SHORT_NAME_MAX;
+				size = strnlen(de->di_fname, sizeof(de->di_fname));
 			else
-				size = QNX4_NAME_MAX;
-			size = strnlen(de->di_fname, size);
+				size = strnlen(le->dl_fname, sizeof(le->dl_fname));
 			QNX4DEBUG((KERN_INFO "qnx4_readdir:%.*s\n", size, de->di_fname));
 			if (!(de->di_status & QNX4_FILE_LINK))
 				ino = blknum * QNX4_INODES_PER_BLOCK + ix - 1;
 			else {
-				le  = (struct qnx4_link_info*)de;
 				ino = ( le32_to_cpu(le->dl_inode_blk) - 1 ) *
 					QNX4_INODES_PER_BLOCK +
 					le->dl_inode_ndx;
-- 
2.29.2


  parent reply	other threads:[~2021-03-22 16:05 UTC|newest]

Thread overview: 197+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-22 16:02 [PATCH 00/11] treewide: address gcc-11 -Wstringop-overread warnings Arnd Bergmann
2021-03-22 16:02 ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02 ` Arnd Bergmann
2021-03-22 16:02 ` Arnd Bergmann
2021-03-22 16:02 ` Arnd Bergmann
2021-03-22 16:02 ` [PATCH 01/11] x86: compressed: avoid gcc-11 -Wstringop-overread warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 23:30   ` [tip: x86/boot] x86/boot/compressed: Avoid " tip-bot2 for Arnd Bergmann
2021-03-22 16:02 ` [PATCH 02/11] x86: tboot: avoid Wstringop-overread-warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 20:29   ` Ingo Molnar
2021-03-22 20:29     ` Ingo Molnar
2021-03-22 20:29     ` [Intel-gfx] " Ingo Molnar
2021-03-22 20:29     ` Ingo Molnar
2021-03-22 20:29     ` Ingo Molnar
2021-03-22 20:29     ` Ingo Molnar
2021-03-22 21:39     ` Arnd Bergmann
2021-03-22 21:39       ` Arnd Bergmann
2021-03-22 21:39       ` [Intel-gfx] " Arnd Bergmann
2021-03-22 21:39       ` Arnd Bergmann
2021-03-22 21:39       ` Arnd Bergmann
2021-03-22 21:39       ` Arnd Bergmann
2021-03-22 22:07     ` Martin Sebor
2021-03-22 22:07       ` Martin Sebor
2021-03-22 22:07       ` [Intel-gfx] " Martin Sebor
2021-03-22 22:07       ` Martin Sebor
2021-03-22 22:07       ` Martin Sebor
2021-03-22 22:07       ` Martin Sebor
2021-03-22 22:49       ` Arnd Bergmann
2021-03-22 22:49         ` Arnd Bergmann
2021-03-22 22:49         ` [Intel-gfx] " Arnd Bergmann
2021-03-22 22:49         ` Arnd Bergmann
2021-03-22 22:49         ` Arnd Bergmann
2021-03-22 22:49         ` Arnd Bergmann
2021-03-22 23:13       ` Ingo Molnar
2021-03-22 23:13         ` Ingo Molnar
2021-03-22 23:13         ` [Intel-gfx] " Ingo Molnar
2021-03-22 23:13         ` Ingo Molnar
2021-03-22 23:13         ` Ingo Molnar
2021-03-22 23:13         ` Ingo Molnar
2021-03-24  9:11       ` David Laight
2021-03-24  9:11         ` David Laight
2021-03-24  9:11         ` [Intel-gfx] " David Laight
2021-03-24  9:11         ` David Laight
2021-03-24  9:11         ` David Laight
2021-03-24  9:11         ` David Laight
2021-03-24 10:39         ` David Laight
2021-03-24 10:39           ` David Laight
2021-03-24 10:39           ` [Intel-gfx] " David Laight
2021-03-24 10:39           ` David Laight
2021-03-24 10:39           ` David Laight
2021-03-24 10:39           ` David Laight
2021-03-22 23:30   ` [tip: x86/boot] x86/boot/tboot: Avoid Wstringop-overread-warning tip-bot2 for Arnd Bergmann
2021-03-22 16:02 ` [PATCH 03/11] security: commoncap: fix -Wstringop-overread warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:31   ` Christian Brauner
2021-03-22 16:31     ` Christian Brauner
2021-03-22 16:31     ` [Intel-gfx] " Christian Brauner
2021-03-22 16:31     ` Christian Brauner
2021-03-22 16:31     ` Christian Brauner
2021-03-22 16:31     ` Christian Brauner
2021-03-24 20:50   ` James Morris
2021-03-24 20:50     ` James Morris
2021-03-24 20:50     ` [Intel-gfx] " James Morris
2021-03-24 20:50     ` James Morris
2021-03-24 20:50     ` James Morris
2021-03-24 20:50     ` James Morris
2021-03-22 16:02 ` [PATCH 04/11] ath11: Wstringop-overread warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-09-28  9:04   ` Kalle Valo
2021-09-28  9:04   ` Kalle Valo
2021-09-28  9:04     ` Kalle Valo
2021-09-28  9:04   ` Kalle Valo
2021-09-28  9:04     ` Kalle Valo
2021-09-28  9:04     ` [Intel-gfx] " Kalle Valo
2021-03-22 16:02 ` Arnd Bergmann [this message]
2021-03-22 16:02   ` [PATCH 05/11] qnx: avoid -Wstringop-overread warning Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02 ` [PATCH 06/11] cgroup: fix -Wzero-length-bounds warnings Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-30  8:41   ` Michal Koutný
2021-03-30  8:41     ` Michal Koutný
2021-03-30  8:41     ` [Intel-gfx] " Michal Koutný
2021-03-30  8:41     ` Michal Koutný
2021-03-30  8:41     ` Michal Koutný
2021-03-30  8:41     ` Michal Koutný
2021-03-30  9:00     ` Arnd Bergmann
2021-03-30  9:00       ` Arnd Bergmann
2021-03-30  9:00       ` [Intel-gfx] " Arnd Bergmann
2021-03-30  9:00       ` Arnd Bergmann
2021-03-30  9:00       ` Arnd Bergmann
2021-03-30  9:00       ` Arnd Bergmann
2021-03-30 14:44       ` Michal Koutný
2021-03-30 14:44         ` Michal Koutný
2021-03-30 14:44         ` [Intel-gfx] " Michal Koutný
2021-03-30 14:44         ` Michal Koutný
2021-03-30 14:44         ` Michal Koutný
2021-03-30 14:44         ` Michal Koutný
2021-03-22 16:02 ` [PATCH 07/11] ARM: sharpsl_param: work around -Wstringop-overread warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02 ` [PATCH 08/11] atmel: avoid gcc -Wstringop-overflow warning Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02 ` [PATCH 09/11] scsi: lpfc: fix gcc -Wstringop-overread warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02 ` [PATCH 10/11] drm/i915: avoid stringop-overread warning on pri_latency Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-24 15:30   ` Jani Nikula
2021-03-24 15:30     ` Jani Nikula
2021-03-24 15:30     ` [Intel-gfx] " Jani Nikula
2021-03-24 15:30     ` Jani Nikula
2021-03-24 15:30     ` Jani Nikula
2021-03-24 15:30     ` Jani Nikula
2021-03-24 17:22     ` Ville Syrjälä
2021-03-24 17:22       ` Ville Syrjälä
2021-03-24 17:22       ` [Intel-gfx] " Ville Syrjälä
2021-03-24 17:22       ` Ville Syrjälä
2021-03-24 17:22       ` Ville Syrjälä
2021-03-24 17:22       ` Ville Syrjälä
2021-03-22 16:02 ` [PATCH 11/11] [RFC] drm/i915/dp: fix array overflow warning Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` [Intel-gfx] " Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-22 16:02   ` Arnd Bergmann
2021-03-25  8:05   ` Jani Nikula
2021-03-25  8:05     ` Jani Nikula
2021-03-25  8:05     ` [Intel-gfx] " Jani Nikula
2021-03-25  8:05     ` Jani Nikula
2021-03-25  8:05     ` Jani Nikula
2021-03-25  8:05     ` Jani Nikula
2021-03-25  9:53     ` Arnd Bergmann
2021-03-25  9:53       ` Arnd Bergmann
2021-03-25  9:53       ` [Intel-gfx] " Arnd Bergmann
2021-03-25  9:53       ` Arnd Bergmann
2021-03-25  9:53       ` Arnd Bergmann
2021-03-25  9:53       ` Arnd Bergmann
2021-03-25 14:49       ` Martin Sebor
2021-03-25 14:49         ` Martin Sebor
2021-03-25 14:49         ` [Intel-gfx] " Martin Sebor
2021-03-25 14:49         ` Martin Sebor
2021-03-25 14:49         ` Martin Sebor
2021-03-25 14:49         ` Martin Sebor
2021-03-30 10:56   ` Hans de Goede
2021-03-30 10:56     ` Hans de Goede
2021-03-30 10:56     ` [Intel-gfx] " Hans de Goede
2021-03-30 10:56     ` Hans de Goede
2021-03-30 10:56     ` Hans de Goede
2021-03-30 10:56     ` Hans de Goede
2021-03-22 19:10 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for treewide: address gcc-11 -Wstringop-overread warnings Patchwork
2021-03-22 19:12 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-03-22 19:38 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-03-23 15:30 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for treewide: address gcc-11 -Wstringop-overread warnings (rev2) Patchwork
2021-03-25 22:35 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for treewide: address gcc-11 -Wstringop-overread warnings (rev3) Patchwork
2021-03-30 11:50 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for treewide: address gcc-11 -Wstringop-overread warnings (rev4) Patchwork
2021-04-06  4:53 ` [PATCH 00/11] treewide: address gcc-11 -Wstringop-overread warnings Martin K. Petersen
2021-04-06  4:53   ` [Intel-gfx] " Martin K. Petersen
2021-04-06  4:53   ` Martin K. Petersen
2021-04-06  4:53   ` Martin K. Petersen
2021-04-06  4:53   ` Martin K. Petersen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210322160253.4032422-6-arnd@kernel.org \
    --to=arnd@kernel.org \
    --cc=al@alarsen.net \
    --cc=arnd@arndb.de \
    --cc=ath11k@lists.infradead.org \
    --cc=cgroups@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=james.smart@broadcom.com \
    --cc=jani.nikula@linux.intel.com \
    --cc=jejb@linux.ibm.com \
    --cc=kvalo@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=msebor@gcc.gnu.org \
    --cc=netdev@vger.kernel.org \
    --cc=ning.sun@intel.com \
    --cc=serge@hallyn.com \
    --cc=simon@thekelleys.org.uk \
    --cc=tboot-devel@lists.sourceforge.net \
    --cc=tj@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.