Abort sysfs_read early if no device found.
sysfs_read currently tried to look in sysfs even in no valid sys_name was found. Don't to that. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
bde2c6e287
commit
678a4a36b0
5
sysfs.c
5
sysfs.c
|
@ -81,6 +81,7 @@ int sysfs_open(int devnum, char *devname, char *attr)
|
||||||
|
|
||||||
void sysfs_init(struct mdinfo *mdi, int fd, int devnum)
|
void sysfs_init(struct mdinfo *mdi, int fd, int devnum)
|
||||||
{
|
{
|
||||||
|
mdi->sys_name[0] = 0;
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
mdu_version_t vers;
|
mdu_version_t vers;
|
||||||
if (ioctl(fd, RAID_VERSION, &vers) != 0)
|
if (ioctl(fd, RAID_VERSION, &vers) != 0)
|
||||||
|
@ -118,6 +119,10 @@ struct mdinfo *sysfs_read(int fd, int devnum, unsigned long options)
|
||||||
return sra;
|
return sra;
|
||||||
memset(sra, 0, sizeof(*sra));
|
memset(sra, 0, sizeof(*sra));
|
||||||
sysfs_init(sra, fd, devnum);
|
sysfs_init(sra, fd, devnum);
|
||||||
|
if (sra->sys_name[0] == 0) {
|
||||||
|
free(sra);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
sprintf(fname, "/sys/block/%s/md/", sra->sys_name);
|
sprintf(fname, "/sys/block/%s/md/", sra->sys_name);
|
||||||
base = fname + strlen(fname);
|
base = fname + strlen(fname);
|
||||||
|
|
Loading…
Reference in New Issue