* [PATCH 0/6] SAST fixes
@ 2024-02-20 10:56 Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 1/6] Create: add_disk_to_super() fix resource leak Mateusz Kusiak
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
This patchset contains minor fixes for issues reported by SAST tool.
Mateusz Kusiak (6):
Create: add_disk_to_super() fix resource leak
mdadm: signal_s() init variables
Monitor: open file before check in check_one_sharer()
Grow: remove dead condition in Grow_reshape()
super1: check fd before passing to get_dev_size() in add_to_super1()
mdmon: refactor md device name check in main()
Create.c | 6 +++++-
Grow.c | 6 +-----
Monitor.c | 13 +++++--------
mdadm.h | 5 ++---
mdmon.c | 21 +++++++++++----------
super1.c | 5 ++++-
6 files changed, 28 insertions(+), 28 deletions(-)
--
2.35.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/6] Create: add_disk_to_super() fix resource leak
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
@ 2024-02-20 10:56 ` Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 2/6] mdadm: signal_s() init variables Mateusz Kusiak
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
Fixes resource leak in add_disk_to_super().
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
---
Create.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Create.c b/Create.c
index 8082f54a8fdc..7e9170b6a1ac 100644
--- a/Create.c
+++ b/Create.c
@@ -279,8 +279,10 @@ static int add_disk_to_super(int mdfd, struct shape *s, struct context *c,
dv->devname);
return 1;
}
- if (!fstat_is_blkdev(fd, dv->devname, &rdev))
+ if (!fstat_is_blkdev(fd, dv->devname, &rdev)) {
+ close(fd);
return 1;
+ }
info->disk.major = major(rdev);
info->disk.minor = minor(rdev);
}
@@ -289,6 +291,7 @@ static int add_disk_to_super(int mdfd, struct shape *s, struct context *c,
if (st->ss->add_to_super(st, &info->disk, fd, dv->devname,
dv->data_offset)) {
ioctl(mdfd, STOP_ARRAY, NULL);
+ close(fd);
return 1;
}
st->ss->getinfo_super(st, info, NULL);
@@ -297,6 +300,7 @@ static int add_disk_to_super(int mdfd, struct shape *s, struct context *c,
*zero_pid = write_zeroes_fork(fd, s, st, dv);
if (*zero_pid <= 0) {
ioctl(mdfd, STOP_ARRAY, NULL);
+ close(fd);
return 1;
}
}
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/6] mdadm: signal_s() init variables
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 1/6] Create: add_disk_to_super() fix resource leak Mateusz Kusiak
@ 2024-02-20 10:56 ` Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 3/6] Monitor: open file before check in check_one_sharer() Mateusz Kusiak
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
Init sigaction structs in signal_s().
This approach might throw warnings for GCC 4.x and lower.
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
---
mdadm.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/mdadm.h b/mdadm.h
index 1f28b3e754be..75c887e4c64c 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -1856,11 +1856,10 @@ static inline char *to_subarray(struct mdstat_ent *ent, char *container)
*/
static inline sighandler_t signal_s(int sig, sighandler_t handler)
{
- struct sigaction new_act;
- struct sigaction old_act;
+ struct sigaction new_act = {0};
+ struct sigaction old_act = {0};
new_act.sa_handler = handler;
- new_act.sa_flags = 0;
if (sigaction(sig, &new_act, &old_act) == 0)
return old_act.sa_handler;
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/6] Monitor: open file before check in check_one_sharer()
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 1/6] Create: add_disk_to_super() fix resource leak Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 2/6] mdadm: signal_s() init variables Mateusz Kusiak
@ 2024-02-20 10:56 ` Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 4/6] Grow: remove dead condition in Grow_reshape() Mateusz Kusiak
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
Open file before performing checks in check_one_sharer() to avoid
file tampering.
Remove redundant access check.
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
---
Monitor.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/Monitor.c b/Monitor.c
index 824a69fc6b79..7cee95d4487a 100644
--- a/Monitor.c
+++ b/Monitor.c
@@ -451,20 +451,17 @@ static int check_one_sharer(int scan)
return 2;
}
- if (access(AUTOREBUILD_PID_PATH, F_OK) != 0)
- return 0;
-
- if (!is_file(AUTOREBUILD_PID_PATH)) {
- pr_err("%s is not a regular file.\n", AUTOREBUILD_PID_PATH);
- return 2;
- }
-
fp = fopen(AUTOREBUILD_PID_PATH, "r");
if (!fp) {
pr_err("Cannot open %s file.\n", AUTOREBUILD_PID_PATH);
return 2;
}
+ if (!is_file(AUTOREBUILD_PID_PATH)) {
+ pr_err("%s is not a regular file.\n", AUTOREBUILD_PID_PATH);
+ return 2;
+ }
+
if (fscanf(fp, "%d", &pid) != 1) {
pr_err("Cannot read pid from %s file.\n", AUTOREBUILD_PID_PATH);
fclose(fp);
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/6] Grow: remove dead condition in Grow_reshape()
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
` (2 preceding siblings ...)
2024-02-20 10:56 ` [PATCH 3/6] Monitor: open file before check in check_one_sharer() Mateusz Kusiak
@ 2024-02-20 10:56 ` Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 5/6] super1: check fd before passing to get_dev_size() in add_to_super1() Mateusz Kusiak
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
Remove dead "if" condition from Grow_reshape(). Sysfs read check is
performed earlier in the code.
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
---
Grow.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/Grow.c b/Grow.c
index f95dae82ef0d..dad7294dac32 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2097,11 +2097,7 @@ int Grow_reshape(char *devname, int fd,
/* got truncated to 32bit, write to
* component_size instead
*/
- if (sra)
- rv = sysfs_set_num(sra, NULL,
- "component_size", s->size);
- else
- rv = -1;
+ rv = sysfs_set_num(sra, NULL, "component_size", s->size);
} else {
rv = md_set_array_info(fd, &array);
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/6] super1: check fd before passing to get_dev_size() in add_to_super1()
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
` (3 preceding siblings ...)
2024-02-20 10:56 ` [PATCH 4/6] Grow: remove dead condition in Grow_reshape() Mateusz Kusiak
@ 2024-02-20 10:56 ` Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 6/6] mdmon: refactor md device name check in main() Mateusz Kusiak
2024-02-23 11:45 ` [PATCH 0/6] SAST fixes Mariusz Tkaczyk
6 siblings, 0 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
Check if file descriptor is valid before passing it to get_dev_size() in
add_to_super().
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
---
super1.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/super1.c b/super1.c
index 871d19f0398c..5439b7bb1240 100644
--- a/super1.c
+++ b/super1.c
@@ -1752,7 +1752,10 @@ static int add_to_super1(struct supertype *st, mdu_disk_info_t *dk,
di->devname = devname;
di->disk = *dk;
di->data_offset = data_offset;
- get_dev_size(fd, NULL, &di->dev_size);
+
+ if (is_fd_valid(fd))
+ get_dev_size(fd, NULL, &di->dev_size);
+
di->next = NULL;
*dip = di;
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 6/6] mdmon: refactor md device name check in main()
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
` (4 preceding siblings ...)
2024-02-20 10:56 ` [PATCH 5/6] super1: check fd before passing to get_dev_size() in add_to_super1() Mateusz Kusiak
@ 2024-02-20 10:56 ` Mateusz Kusiak
2024-02-23 11:45 ` [PATCH 0/6] SAST fixes Mariusz Tkaczyk
6 siblings, 0 replies; 8+ messages in thread
From: Mateusz Kusiak @ 2024-02-20 10:56 UTC (permalink / raw)
To: linux-raid; +Cc: jes, mariusz.tkaczyk
Refactor mdmon main function to verify if fd is valid prior to checking
device name. This is due to static code analysis complaining after
change b938519e7719 ("util: remove obsolete code from get_md_name").
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
---
mdmon.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/mdmon.c b/mdmon.c
index a2038fe6c35f..5fdb5cdb5a49 100644
--- a/mdmon.c
+++ b/mdmon.c
@@ -302,12 +302,12 @@ static int mdmon(char *devnm, int must_fork, int takeover);
int main(int argc, char *argv[])
{
char *container_name = NULL;
- char *devnm = NULL;
int status = 0;
int opt;
int all = 0;
int takeover = 0;
int dofork = 1;
+ int mdfd = -1;
bool help = false;
static struct option options[] = {
{"all", 0, NULL, 'a'},
@@ -410,19 +410,20 @@ int main(int argc, char *argv[])
free_mdstat(mdstat);
return status;
- } else {
- int mdfd = open_mddev(container_name, 0);
- devnm = fd2devnm(mdfd);
+ }
+
+ mdfd = open_mddev(container_name, 0);
+ if (is_fd_valid(mdfd)) {
+ char *devnm = fd2devnm(mdfd);
close(mdfd);
- }
- if (!devnm) {
- pr_err("%s is not a valid md device name\n",
- container_name);
- return 1;
+ if (devnm)
+ return mdmon(devnm, dofork && do_fork(), takeover);
}
- return mdmon(devnm, dofork && do_fork(), takeover);
+
+ pr_err("%s is not a valid md device name\n", container_name);
+ return 1;
}
static int mdmon(char *devnm, int must_fork, int takeover)
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/6] SAST fixes
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
` (5 preceding siblings ...)
2024-02-20 10:56 ` [PATCH 6/6] mdmon: refactor md device name check in main() Mateusz Kusiak
@ 2024-02-23 11:45 ` Mariusz Tkaczyk
6 siblings, 0 replies; 8+ messages in thread
From: Mariusz Tkaczyk @ 2024-02-23 11:45 UTC (permalink / raw)
To: Mateusz Kusiak; +Cc: linux-raid, jes
On Tue, 20 Feb 2024 11:56:06 +0100
Mateusz Kusiak <mateusz.kusiak@intel.com> wrote:
> This patchset contains minor fixes for issues reported by SAST tool.
>
> Mateusz Kusiak (6):
> Create: add_disk_to_super() fix resource leak
> mdadm: signal_s() init variables
> Monitor: open file before check in check_one_sharer()
> Grow: remove dead condition in Grow_reshape()
> super1: check fd before passing to get_dev_size() in add_to_super1()
> mdmon: refactor md device name check in main()
>
> Create.c | 6 +++++-
> Grow.c | 6 +-----
> Monitor.c | 13 +++++--------
> mdadm.h | 5 ++---
> mdmon.c | 21 +++++++++++----------
> super1.c | 5 ++++-
> 6 files changed, 28 insertions(+), 28 deletions(-)
>
All applied!
Thanks,
Mariusz
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-02-23 11:45 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-20 10:56 [PATCH 0/6] SAST fixes Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 1/6] Create: add_disk_to_super() fix resource leak Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 2/6] mdadm: signal_s() init variables Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 3/6] Monitor: open file before check in check_one_sharer() Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 4/6] Grow: remove dead condition in Grow_reshape() Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 5/6] super1: check fd before passing to get_dev_size() in add_to_super1() Mateusz Kusiak
2024-02-20 10:56 ` [PATCH 6/6] mdmon: refactor md device name check in main() Mateusz Kusiak
2024-02-23 11:45 ` [PATCH 0/6] SAST fixes Mariusz Tkaczyk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).