Skip to content

Commit 0de2d4b

Browse files
committed
nvme-cli: sanitize free() handling
As per the POSIX manual, free() is NULL-safe i.e. we could call it without first checking whether the respective pointer is non-NULL. So apply that here. Suggested-by: Martin Belanger <[email protected]> Signed-off-by: Martin George <[email protected]>
1 parent 1494a4d commit 0de2d4b

7 files changed

Lines changed: 28 additions & 56 deletions

File tree

nvme-print-json.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2287,8 +2287,7 @@ static void json_phy_rx_eom_log(struct nvme_phy_rx_eom_log *log, __u16 controlle
22872287
if (allocated_eyes) {
22882288
for (i = 0; i < log->nd; i++) {
22892289
/* Free any Printable Eye strings allocated */
2290-
if (allocated_eyes[i])
2291-
free(allocated_eyes[i]);
2290+
free(allocated_eyes[i]);
22922291
}
22932292
}
22942293

plugins/memblaze/memblaze-nvme.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ static void show_memblaze_smart_log_new(struct nvme_memblaze_smart_log *s, unsig
122122
__u8 *raw = malloc(RAW_SIZE * sizeof(__u8));
123123

124124
if (!nm) {
125-
if (raw)
126-
free(raw);
125+
free(raw);
127126
return;
128127
}
129128
if (!raw) {
@@ -320,8 +319,7 @@ static void show_memblaze_smart_log_old(struct nvme_memblaze_smart_log *smart,
320319
__u8 *raw = malloc(RAW_SIZE * sizeof(__u8));
321320

322321
if (!nm) {
323-
if (raw)
324-
free(raw);
322+
free(raw);
325323
return;
326324
}
327325
if (!raw) {

plugins/micron/micron-nvme.c

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,8 +2345,7 @@ static int micron_telemetry_log(int fd, __u8 type, __u8 **data,
23452345
err = nvme_get_log_telemetry_host(fd, 0, bs, buffer);
23462346
if (err) {
23472347
fprintf(stderr, "Failed to get telemetry log header for 0x%X\n", type);
2348-
if (buffer)
2349-
free(buffer);
2348+
free(buffer);
23502349
return err;
23512350
}
23522351

@@ -2359,10 +2358,8 @@ static int micron_telemetry_log(int fd, __u8 type, __u8 **data,
23592358

23602359
if (!data_area[da]) {
23612360
fprintf(stderr, "Requested telemetry data for 0x%X is empty\n", type);
2362-
if (buffer) {
2363-
free(buffer);
2364-
buffer = NULL;
2365-
}
2361+
free(buffer);
2362+
buffer = NULL;
23662363
return -1;
23672364
}
23682365

@@ -2384,8 +2381,7 @@ static int micron_telemetry_log(int fd, __u8 type, __u8 **data,
23842381
*data = buffer;
23852382
} else {
23862383
fprintf(stderr, "Failed to get telemetry data for 0x%x\n", type);
2387-
if (buffer)
2388-
free(buffer);
2384+
free(buffer);
23892385
}
23902386

23912387
return err;
@@ -2410,10 +2406,8 @@ static int GetTelemetryData(int fd, const char *dir)
24102406
sprintf(msg, "telemetry log: 0x%X", tmap[i].log);
24112407
WriteData(buffer, logSize, dir, tmap[i].file, msg);
24122408
}
2413-
if (buffer) {
2414-
free(buffer);
2415-
buffer = NULL;
2416-
}
2409+
free(buffer);
2410+
buffer = NULL;
24172411
logSize = 0;
24182412
}
24192413
return err;
@@ -3733,14 +3727,11 @@ static int GetOcpEnhancedTelemetryLog(int fd, const char *dir, int nLogID)
37333727
}
37343728
}
37353729

3736-
if (pTelemetryBuffer != NULL) {
3737-
free(pTelemetryBuffer);
3738-
pTelemetryBuffer = NULL;
3739-
}
3730+
free(pTelemetryBuffer);
3731+
pTelemetryBuffer = NULL;
37403732
}
37413733
// free mem of header, all areas
3742-
if (pTelemetryDataHeader != NULL)
3743-
free(pTelemetryDataHeader);
3734+
free(pTelemetryDataHeader);
37443735

37453736
return err;
37463737
}
@@ -4102,10 +4093,8 @@ static int micron_internal_logs(int argc, char **argv, struct command *cmd,
41024093
WriteData(dataBuffer, bSize, strCtrlDirName, aVendorLogs[i].strFileName, msg);
41034094
}
41044095

4105-
if (dataBuffer) {
4106-
free(dataBuffer);
4107-
dataBuffer = NULL;
4108-
}
4096+
free(dataBuffer);
4097+
dataBuffer = NULL;
41094098
}
41104099

41114100
err = ZipAndRemoveDir(strMainDirName, cfg.package);

plugins/shannon/shannon-nvme.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,7 @@ static int get_additional_feature(int argc, char **argv, struct command *cmd, st
246246
err = nvme_get_features(&args);
247247
if (err > 0)
248248
nvme_show_status(err);
249-
if (buf)
250-
free(buf);
249+
free(buf);
251250
return err;
252251
}
253252

@@ -367,8 +366,7 @@ static int set_additional_feature(int argc, char **argv, struct command *cmd, st
367366
nvme_show_status(err);
368367

369368
free:
370-
if (buf)
371-
free(buf);
369+
free(buf);
372370
return err;
373371
}
374372

plugins/toshiba/toshiba-nvme.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,7 @@ static int nvme_get_sct_status(int fd, __u32 device_mask)
118118
}
119119
}
120120
end:
121-
if (data)
122-
free(data);
121+
free(data);
123122
return err;
124123
}
125124

@@ -321,8 +320,7 @@ static int nvme_get_internal_log(int fd, const char *const filename, bool curren
321320
end:
322321
if (o_fd >= 0)
323322
close(o_fd);
324-
if (page_data)
325-
free(page_data);
323+
free(page_data);
326324
return err;
327325
}
328326

@@ -416,8 +414,7 @@ static int nvme_get_vendor_log(struct nvme_dev *dev, __u32 namespace_id,
416414
d(log, log_len, 16, 1);
417415
}
418416
end:
419-
if (log)
420-
free(log);
417+
free(log);
421418
return err;
422419
}
423420

plugins/wdc/wdc-nvme.c

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7301,8 +7301,7 @@ static int wdc_get_c0_log_page(nvme_root_t r, struct nvme_dev *dev, char *format
73017301
ret = -1;
73027302
}
73037303

7304-
if (data)
7305-
free(data);
7304+
free(data);
73067305
break;
73077306
default:
73087307
fprintf(stderr, "ERROR: WDC: Unknown device id - 0x%x\n", device_id);
@@ -8590,8 +8589,7 @@ static int wdc_vs_cloud_log(int argc, char **argv, struct command *command,
85908589
ret = -1;
85918590
}
85928591

8593-
if (data)
8594-
free(data);
8592+
free(data);
85958593

85968594
out:
85978595
nvme_free_tree(r);
@@ -8674,8 +8672,7 @@ static int wdc_vs_hw_rev_log(int argc, char **argv, struct command *command,
86748672
}
86758673

86768674
free_buf:
8677-
if (data)
8678-
free(data);
8675+
free(data);
86798676

86808677
out:
86818678
nvme_free_tree(r);
@@ -8758,8 +8755,7 @@ static int wdc_vs_device_waf(int argc, char **argv, struct command *command,
87588755
phys_media_units_written_tlc = int128_to_double(ext_smart_log_ptr->ext_smart_pmuwt);
87598756
phys_media_units_written_slc = int128_to_double(ext_smart_log_ptr->ext_smart_pmuws);
87608757

8761-
if (data)
8762-
free(data);
8758+
free(data);
87638759
} else {
87648760
fprintf(stderr, "ERROR: WDC %s: get smart cloud log failure\n", __func__);
87658761
ret = -1;
@@ -9896,8 +9892,7 @@ static int wdc_fetch_log_directory(struct nvme_dev *dev, struct WDC_DE_VU_LOG_DI
98969892
directory->numOfValidLogEntries = entryId;
98979893

98989894
end:
9899-
if (fileDirectory)
9900-
free(fileDirectory);
9895+
free(fileDirectory);
99019896
return ret;
99029897
}
99039898

@@ -10043,8 +10038,7 @@ static int wdc_de_get_dump_trace(struct nvme_dev *dev, const char *filePath, __u
1004310038
ret);
1004410039
}
1004510040

10046-
if (readBuffer)
10047-
free(readBuffer);
10041+
free(readBuffer);
1004810042

1004910043
return ret;
1005010044
}
@@ -11533,8 +11527,7 @@ static int wdc_do_vs_nand_stats_sn810_2(struct nvme_dev *dev, char *format)
1153311527
}
1153411528

1153511529
out:
11536-
if (data)
11537-
free(data);
11530+
free(data);
1153811531
return ret;
1153911532
}
1154011533

@@ -12313,8 +12306,7 @@ static int wdc_cloud_boot_SSD_version(int argc, char **argv, struct command *com
1231312306
ret = -1;
1231412307
}
1231512308

12316-
if (data)
12317-
free(data);
12309+
free(data);
1231812310
} else {
1231912311
fprintf(stderr, "ERROR: WDC: unsupported device for this command\n");
1232012312
}

plugins/ymtc/ymtc-nvme.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ static int show_ymtc_smart_log(struct nvme_dev *dev, __u32 nsid,
3232
u8 *raw = malloc(RAW_SIZE * sizeof(u8));
3333

3434
if (!nm) {
35-
if (raw)
36-
free(raw);
35+
free(raw);
3736
return -1;
3837
}
3938
if (!raw) {

0 commit comments

Comments
 (0)