public inbox for linux-nvme@lists.infradead.org
 help / color / mirror / Atom feed
* [linux-nvme:nvme-5.19] BUILD SUCCESS WITH WARNING 4db675888cdb7b24812e289d7f90e7928dd400a3
@ 2022-06-30  5:58 kernel test robot
  2022-06-30  6:24 ` Christoph Hellwig
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2022-06-30  5:58 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-nvme

tree/branch: git://git.infradead.org/nvme.git nvme-5.19
branch HEAD: 4db675888cdb7b24812e289d7f90e7928dd400a3  nvmet: add a clear_ids attribute for passthru targets

Warning: (recently discovered and may have been fixed)

drivers/nvme/target/passthru.c:54:16: warning: variable 'csi_seen' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
drivers/nvme/target/passthru.c:57:7: warning: variable 'csi_seen' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]

Warning ids grouped by kconfigs:

clang_recent_errors
|-- arm-randconfig-r015-20220629
|   |-- drivers-nvme-target-passthru.c:warning:variable-csi_seen-is-used-uninitialized-whenever-for-loop-exits-because-its-condition-is-false
|   `-- drivers-nvme-target-passthru.c:warning:variable-csi_seen-is-used-uninitialized-whenever-if-condition-is-true
`-- x86_64-randconfig-a014
    |-- drivers-nvme-target-passthru.c:warning:variable-csi_seen-is-used-uninitialized-whenever-for-loop-exits-because-its-condition-is-false
    `-- drivers-nvme-target-passthru.c:warning:variable-csi_seen-is-used-uninitialized-whenever-if-condition-is-true

elapsed time: 723m

configs tested: 52
configs skipped: 2

gcc tested configs:
arm                                 defconfig
arm                              allyesconfig
arm64                            allyesconfig
ia64                             allmodconfig
mips                             allyesconfig
powerpc                          allmodconfig
powerpc                           allnoconfig
sh                               allmodconfig
i386                                defconfig
i386                             allyesconfig
arc                              allyesconfig
alpha                            allyesconfig
m68k                             allmodconfig
m68k                             allyesconfig
x86_64                        randconfig-a004
x86_64                        randconfig-a002
x86_64                        randconfig-a006
i386                          randconfig-a001
i386                          randconfig-a003
i386                          randconfig-a005
x86_64                        randconfig-a013
x86_64                        randconfig-a011
x86_64                        randconfig-a015
i386                          randconfig-a014
i386                          randconfig-a012
i386                          randconfig-a016
arc                  randconfig-r043-20220629
s390                 randconfig-r044-20220629
riscv                randconfig-r042-20220629
um                             i386_defconfig
um                           x86_64_defconfig
x86_64                    rhel-8.3-kselftests
x86_64                          rhel-8.3-func
x86_64                         rhel-8.3-kunit
x86_64                           rhel-8.3-syz
x86_64                              defconfig
x86_64                           allyesconfig
x86_64                               rhel-8.3

clang tested configs:
x86_64                        randconfig-a005
x86_64                        randconfig-a001
x86_64                        randconfig-a003
i386                          randconfig-a002
i386                          randconfig-a004
i386                          randconfig-a006
x86_64                        randconfig-a012
x86_64                        randconfig-a014
x86_64                        randconfig-a016
i386                          randconfig-a013
i386                          randconfig-a015
i386                          randconfig-a011
hexagon              randconfig-r041-20220629
hexagon              randconfig-r045-20220629

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [linux-nvme:nvme-5.19] BUILD SUCCESS WITH WARNING 4db675888cdb7b24812e289d7f90e7928dd400a3
  2022-06-30  5:58 [linux-nvme:nvme-5.19] BUILD SUCCESS WITH WARNING 4db675888cdb7b24812e289d7f90e7928dd400a3 kernel test robot
@ 2022-06-30  6:24 ` Christoph Hellwig
  2022-06-30 16:54   ` Alan Adamson
  0 siblings, 1 reply; 3+ messages in thread
From: Christoph Hellwig @ 2022-06-30  6:24 UTC (permalink / raw)
  To: kernel test robot; +Cc: Christoph Hellwig, linux-nvme, Alan Adamson

On Thu, Jun 30, 2022 at 01:58:42PM +0800, kernel test robot wrote:
> tree/branch: git://git.infradead.org/nvme.git nvme-5.19
> branch HEAD: 4db675888cdb7b24812e289d7f90e7928dd400a3  nvmet: add a clear_ids attribute for passthru targets
> 
> Warning: (recently discovered and may have been fixed)
> 
> drivers/nvme/target/passthru.c:54:16: warning: variable 'csi_seen' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
> drivers/nvme/target/passthru.c:57:7: warning: variable 'csi_seen' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]

I ended up fixing this with the patch below.  Alan, let me know
if this works for you:

diff --git a/drivers/nvme/target/passthru.c b/drivers/nvme/target/passthru.c
index d71ed297ad16b..6f39a29828b12 100644
--- a/drivers/nvme/target/passthru.c
+++ b/drivers/nvme/target/passthru.c
@@ -33,10 +33,9 @@ void nvmet_passthrough_override_cap(struct nvmet_ctrl *ctrl)
 static u16 nvmet_passthru_override_id_descs(struct nvmet_req *req)
 {
 	struct nvmet_ctrl *ctrl = req->sq->ctrl;
-	struct nvme_ns_id_desc *cur;
 	u16 status = NVME_SC_SUCCESS;
 	int pos, len;
-	bool csi_seen;
+	bool csi_seen = false;
 	void *data;
 	u8 csi;
 
@@ -52,26 +51,25 @@ static u16 nvmet_passthru_override_id_descs(struct nvmet_req *req)
 		goto out_free;
 
 	for (pos = 0; pos < NVME_IDENTIFY_DATA_SIZE; pos += len) {
-		cur = data + pos;
+		struct nvme_ns_id_desc *cur = data + pos;
 
 		if (cur->nidl == 0)
 			break;
-		len = cur->nidl;
 		if (cur->nidt == NVME_NIDT_CSI) {
-			memcpy(&csi, data + pos + sizeof(struct nvme_ns_id_desc),
-			       NVME_NIDT_CSI_LEN);
-			csi_seen = 1;
+			memcpy(&csi, cur + 1, NVME_NIDT_CSI_LEN);
+			csi_seen = true;
 			break;
 		}
-		len += sizeof(struct nvme_ns_id_desc);
+		len = sizeof(struct nvme_ns_id_desc) + cur->nidl;
 	}
 
 	memset(data, 0, NVME_IDENTIFY_DATA_SIZE);
 	if (csi_seen) {
-		cur = data;
+		struct nvme_ns_id_desc *cur = data;
+
 		cur->nidt = NVME_NIDT_CSI;
 		cur->nidl = NVME_NIDT_CSI_LEN;
-		memcpy(data + sizeof(struct nvme_ns_id_desc), &csi,  NVME_NIDT_CSI_LEN);
+		memcpy(cur + 1, &csi, NVME_NIDT_CSI_LEN);
 	}
 	status = nvmet_copy_to_sgl(req, 0, data, NVME_IDENTIFY_DATA_SIZE);
 out_free:


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [linux-nvme:nvme-5.19] BUILD SUCCESS WITH WARNING 4db675888cdb7b24812e289d7f90e7928dd400a3
  2022-06-30  6:24 ` Christoph Hellwig
@ 2022-06-30 16:54   ` Alan Adamson
  0 siblings, 0 replies; 3+ messages in thread
From: Alan Adamson @ 2022-06-30 16:54 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: kernel test robot, linux-nvme@lists.infradead.org



> On Jun 29, 2022, at 11:24 PM, Christoph Hellwig <hch@lst.de> wrote:
> 
> On Thu, Jun 30, 2022 at 01:58:42PM +0800, kernel test robot wrote:
>> tree/branch: git://git.infradead.org/nvme.git nvme-5.19
>> branch HEAD: 4db675888cdb7b24812e289d7f90e7928dd400a3  nvmet: add a clear_ids attribute for passthru targets
>> 
>> Warning: (recently discovered and may have been fixed)
>> 
>> drivers/nvme/target/passthru.c:54:16: warning: variable 'csi_seen' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
>> drivers/nvme/target/passthru.c:57:7: warning: variable 'csi_seen' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> 
> I ended up fixing this with the patch below.  Alan, let me know
> if this works for you:

Looks good.  I tested with my environment.

Reviewed-by: Alan Adamson <alan.adamson@oracle.com>



> 
> diff --git a/drivers/nvme/target/passthru.c b/drivers/nvme/target/passthru.c
> index d71ed297ad16b..6f39a29828b12 100644
> --- a/drivers/nvme/target/passthru.c
> +++ b/drivers/nvme/target/passthru.c
> @@ -33,10 +33,9 @@ void nvmet_passthrough_override_cap(struct nvmet_ctrl *ctrl)
> static u16 nvmet_passthru_override_id_descs(struct nvmet_req *req)
> {
> 	struct nvmet_ctrl *ctrl = req->sq->ctrl;
> -	struct nvme_ns_id_desc *cur;
> 	u16 status = NVME_SC_SUCCESS;
> 	int pos, len;
> -	bool csi_seen;
> +	bool csi_seen = false;
> 	void *data;
> 	u8 csi;
> 
> @@ -52,26 +51,25 @@ static u16 nvmet_passthru_override_id_descs(struct nvmet_req *req)
> 		goto out_free;
> 
> 	for (pos = 0; pos < NVME_IDENTIFY_DATA_SIZE; pos += len) {
> -		cur = data + pos;
> +		struct nvme_ns_id_desc *cur = data + pos;
> 
> 		if (cur->nidl == 0)
> 			break;
> -		len = cur->nidl;
> 		if (cur->nidt == NVME_NIDT_CSI) {
> -			memcpy(&csi, data + pos + sizeof(struct nvme_ns_id_desc),
> -			       NVME_NIDT_CSI_LEN);
> -			csi_seen = 1;
> +			memcpy(&csi, cur + 1, NVME_NIDT_CSI_LEN);
> +			csi_seen = true;
> 			break;
> 		}
> -		len += sizeof(struct nvme_ns_id_desc);
> +		len = sizeof(struct nvme_ns_id_desc) + cur->nidl;
> 	}
> 
> 	memset(data, 0, NVME_IDENTIFY_DATA_SIZE);
> 	if (csi_seen) {
> -		cur = data;
> +		struct nvme_ns_id_desc *cur = data;
> +
> 		cur->nidt = NVME_NIDT_CSI;
> 		cur->nidl = NVME_NIDT_CSI_LEN;
> -		memcpy(data + sizeof(struct nvme_ns_id_desc), &csi,  NVME_NIDT_CSI_LEN);
> +		memcpy(cur + 1, &csi, NVME_NIDT_CSI_LEN);
> 	}
> 	status = nvmet_copy_to_sgl(req, 0, data, NVME_IDENTIFY_DATA_SIZE);
> out_free:



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-06-30 16:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-30  5:58 [linux-nvme:nvme-5.19] BUILD SUCCESS WITH WARNING 4db675888cdb7b24812e289d7f90e7928dd400a3 kernel test robot
2022-06-30  6:24 ` Christoph Hellwig
2022-06-30 16:54   ` Alan Adamson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox