aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColeman Kane <[email protected]>2022-05-17 16:07:39 -0400
committerGitHub <[email protected]>2022-05-17 13:07:39 -0700
commitc0cf6ed6792e545fd614c2a88cb53756db7e03f8 (patch)
tree429fbc81733e4f3e26f6ce655e4752ba944c377e
parent276b08cb0077d7f6c4fe6b735e72740e8e72d572 (diff)
Fix compiler warnings about zero-length arrays in inline bitops
The compiler appears to be expanding the unused NULL pointer into a zero-length array via the inline bitops code. When -Werror=array-bounds is used, this causes a build failure. Recommended solution is allocate temporary structures, fill with zeros (to avoid uninitialized data use warnings), and pass the pointer to those to the inline calls. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Coleman Kane <[email protected]> Closes #13463 Closes #13465
-rw-r--r--config/kernel-blk-queue.m412
1 files changed, 9 insertions, 3 deletions
diff --git a/config/kernel-blk-queue.m4 b/config/kernel-blk-queue.m4
index 559ae9800..2472c49dd 100644
--- a/config/kernel-blk-queue.m4
+++ b/config/kernel-blk-queue.m4
@@ -93,8 +93,10 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_DISCARD], [
ZFS_LINUX_TEST_SRC([blk_queue_discard], [
#include <linux/blkdev.h>
],[
- struct request_queue *q __attribute__ ((unused)) = NULL;
+ struct request_queue r;
+ struct request_queue *q = &r;
int value __attribute__ ((unused));
+ memset(q, 0, sizeof(r));
value = blk_queue_discard(q);
])
])
@@ -119,16 +121,20 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_SECURE_ERASE], [
ZFS_LINUX_TEST_SRC([blk_queue_secure_erase], [
#include <linux/blkdev.h>
],[
- struct request_queue *q __attribute__ ((unused)) = NULL;
+ struct request_queue r;
+ struct request_queue *q = &r;
int value __attribute__ ((unused));
+ memset(q, 0, sizeof(r));
value = blk_queue_secure_erase(q);
])
ZFS_LINUX_TEST_SRC([blk_queue_secdiscard], [
#include <linux/blkdev.h>
],[
- struct request_queue *q __attribute__ ((unused)) = NULL;
+ struct request_queue r;
+ struct request_queue *q = &r;
int value __attribute__ ((unused));
+ memset(q, 0, sizeof(r));
value = blk_queue_secdiscard(q);
])
])