sysfs_open leaks devnum2devname() result
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
e6b9548dce
commit
1e4bc070a7
7
sysfs.c
7
sysfs.c
|
@ -61,8 +61,12 @@ int sysfs_open(int devnum, char *devname, char *attr)
|
||||||
{
|
{
|
||||||
char fname[50];
|
char fname[50];
|
||||||
int fd;
|
int fd;
|
||||||
|
char *mdname = devnum2devname(devnum);
|
||||||
|
|
||||||
sprintf(fname, "/sys/block/%s/md/", devnum2devname(devnum));
|
if (!mdname)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
sprintf(fname, "/sys/block/%s/md/", mdname);
|
||||||
if (devname) {
|
if (devname) {
|
||||||
strcat(fname, devname);
|
strcat(fname, devname);
|
||||||
strcat(fname, "/");
|
strcat(fname, "/");
|
||||||
|
@ -71,6 +75,7 @@ int sysfs_open(int devnum, char *devname, char *attr)
|
||||||
fd = open(fname, O_RDWR);
|
fd = open(fname, O_RDWR);
|
||||||
if (fd < 0 && errno == EACCES)
|
if (fd < 0 && errno == EACCES)
|
||||||
fd = open(fname, O_RDONLY);
|
fd = open(fname, O_RDONLY);
|
||||||
|
free(mdname);
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue