From: "Baldysiak, Pawel" <pawel.baldysiak@intel.com>
To: "neilb@suse.de" <neilb@suse.de>,
"Jes.Sorensen@redhat.com" <Jes.Sorensen@redhat.com>
Cc: "linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
"gqjiang@suse.com" <gqjiang@suse.com>
Subject: Re: [PATCH 5/8] {platform,super}-intel: Fix two resource leaks
Date: Thu, 10 Mar 2016 11:14:10 +0000 [thread overview]
Message-ID: <1457608450.28311.10.camel@intel.com> (raw)
In-Reply-To: <wrfjegbjvcvd.fsf@redhat.com>
On Wed, 2016-03-09 at 11:23 -0500, Jes Sorensen wrote:
> NeilBrown <neilb@suse.de> writes:
> >
> > On Wed, Mar 09 2016, Jes.Sorensen@redhat.com wrote:
> >
> > >
> > > From: Jes Sorensen <Jes.Sorensen@redhat.com>
> > >
> > > The code did not free 'dir' allocated by opendir(). An additional
> > > benefit is that this simplifies the for() loops.
> > >
> > > Fixes: 60f0f54d ("IMSM: Add support for VMD")
> > > Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> > > ---
> > > platform-intel.c | 7 ++++++-
> > > super-intel.c | 6 +++++-
> > > 2 files changed, 11 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/platform-intel.c b/platform-intel.c
> > > index 88818f3..c60fd9e 100644
> > > --- a/platform-intel.c
> > > +++ b/platform-intel.c
> > > @@ -724,8 +724,10 @@ char *vmd_domain_to_controller(struct sys_dev *hba, char *buf)
> > > return NULL;
> > >
> > > dir = opendir("/sys/bus/pci/drivers/vmd");
> > > + if (!dir)
> > > + return NULL;
> > >
> > > - for (ent = dir ? readdir(dir) : NULL; ent; ent = readdir(dir)) {
> > > + for (ent = readdir(dir); ent; ent = readdir(dir)) {
> > > sprintf(path, "/sys/bus/pci/drivers/vmd/%s/domain/device",
> > > ent->d_name);
> > >
> > > @@ -734,8 +736,11 @@ char *vmd_domain_to_controller(struct sys_dev *hba, char *buf)
> > >
> > > if (strncmp(buf, hba->path, strlen(buf)) == 0) {
> > > sprintf(path, "/sys/bus/pci/drivers/vmd/%s", ent->d_name);
> > > + closedir(dir);
> > > return realpath(path, buf);
> > > }
> > > }
> > > +
> > > + closedir(dir);
> > > return NULL;
> > > }
> > > diff --git a/super-intel.c b/super-intel.c
> > > index 158f4e8..e1bee75 100644
> > > --- a/super-intel.c
> > > +++ b/super-intel.c
> > > @@ -1781,7 +1781,10 @@ static int print_vmd_attached_devs(struct sys_dev *hba)
> > > * this hba
> > > */
> > > dir = opendir("/sys/bus/pci/drivers/nvme");
> > > - for (ent = dir ? readdir(dir) : NULL; ent; ent = readdir(dir)) {
> > > + if (!dir)
> > > + return 1;
> > > +
> > Returning '1' looks really weird here. I can see it is consistent with
> > if (hba->type != SYS_DEV_VMD)
> > return 1;
> >
> > above, but still....
> > As the return value is never used, should we just make it 'void' ??
> Seems reasonable - I'll put that in a separate patch.
>
> Cheers,
> Jes
Hello,
Thanks for the fix Jes.
I thinks that instead of making it "void" we can actually check the return value and print a proper message if something goes wrong.
Also "simplified for() loop" can be applied to ahci_enumerate_ports() as well.
@@ -1624,7 +1624,10 @@ static int ahci_enumerate_ports(const char *hba_path, int port_count, int host_b
* this hba
*/
dir = opendir("/sys/dev/block");
- for (ent = dir ? readdir(dir) : NULL; ent; ent = readdir(dir)) {
+ if (!dir)
+ return 1;
+
+ for (ent = readdir(dir); ent; ent = readdir(dir)) {
int fd;
char model[64];
char vendor[64];
@@ -2021,7 +2024,11 @@ static int detail_platform_imsm(int verbose, int enumerate_only, char *controlle
print_imsm_capability(&entry->orom);
printf(" I/O Controller : %s (%s)\n",
vmd_domain_to_controller(hba, buf), get_sys_dev_type(hba->type));
- print_vmd_attached_devs(hba);
+ if (print_vmd_attached_devs(hba)) {
+ if (verbose > 0)
+ pr_err("failed to get devices attached to VMD domain.\n");
+ result |= 2;
+ }
printf("\n");
}
}
Is that ok with you? Should I prepare a proper patch with this?
Thanks,
Pawel Baldysiak
next prev parent reply other threads:[~2016-03-10 11:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-08 17:30 [PATCH 0/8] mdadm static checker fixes Jes.Sorensen
2016-03-08 17:30 ` [PATCH 1/8] Manage: Manage_add(): Fix memory leak Jes.Sorensen
2016-03-08 17:30 ` [PATCH 2/8] load_sys(): Add a buffer size argument Jes.Sorensen
2016-03-08 17:30 ` [PATCH 3/8] Grow: Grow_continue_command() remove dead code Jes.Sorensen
2016-03-08 22:42 ` NeilBrown
2016-03-09 16:19 ` Jes Sorensen
2016-03-08 17:30 ` [PATCH 4/8] Grow: Grow_addbitmap(): Add check to quiet down static code checkers Jes.Sorensen
2016-03-09 17:42 ` Guoqing Jiang
2016-03-09 14:00 ` Jes Sorensen
2016-03-10 7:21 ` NeilBrown
2016-03-10 16:40 ` Jes Sorensen
2016-03-08 17:30 ` [PATCH 5/8] {platform,super}-intel: Fix two resource leaks Jes.Sorensen
2016-03-08 22:45 ` NeilBrown
2016-03-09 16:23 ` Jes Sorensen
2016-03-10 11:14 ` Baldysiak, Pawel [this message]
2016-03-10 16:37 ` Jes Sorensen
2016-03-08 17:30 ` [PATCH 6/8] bitmap: Fix resource leak in bitmap_file_open() Jes.Sorensen
2016-03-08 22:50 ` NeilBrown
2016-03-09 16:28 ` Jes Sorensen
2016-03-08 17:30 ` [PATCH 7/8] Manage: Manage_subdevs() fix file descriptor leak Jes.Sorensen
2016-03-08 17:30 ` [PATCH 8/8] super1: Fix potential buffer overflows when copying cluster_name Jes.Sorensen
2016-03-08 22:55 ` [PATCH 0/8] mdadm static checker fixes NeilBrown
2016-03-09 16:30 ` Jes Sorensen
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=1457608450.28311.10.camel@intel.com \
--to=pawel.baldysiak@intel.com \
--cc=Jes.Sorensen@redhat.com \
--cc=gqjiang@suse.com \
--cc=linux-raid@vger.kernel.org \
--cc=neilb@suse.de \
/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.