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:
NeilBrown 2008-11-04 20:56:11 +11:00
parent bde2c6e287
commit 678a4a36b0
1 changed files with 5 additions and 0 deletions

View File

@ -81,6 +81,7 @@ int sysfs_open(int devnum, char *devname, char *attr)
void sysfs_init(struct mdinfo *mdi, int fd, int devnum)
{
mdi->sys_name[0] = 0;
if (fd >= 0) {
mdu_version_t vers;
if (ioctl(fd, RAID_VERSION, &vers) != 0)
@ -118,6 +119,10 @@ struct mdinfo *sysfs_read(int fd, int devnum, unsigned long options)
return sra;
memset(sra, 0, sizeof(*sra));
sysfs_init(sra, fd, devnum);
if (sra->sys_name[0] == 0) {
free(sra);
return NULL;
}
sprintf(fname, "/sys/block/%s/md/", sra->sys_name);
base = fname + strlen(fname);