Correct readlink usage in sysfs.c
readlink doesn't nul-terminate the returned string, so we must be sure to do that. Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
44d2e36556
commit
7364918895
6
sysfs.c
6
sysfs.c
|
@ -374,14 +374,16 @@ int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd)
|
|||
|
||||
memset(nm, 0, sizeof(nm));
|
||||
sprintf(dv, "/sys/dev/block/%d:%d", sd->disk.major, sd->disk.minor);
|
||||
if (readlink(dv, nm, sizeof(nm)) < 0)
|
||||
rv = readlink(dv, nm, sizeof(nm));
|
||||
if (rv <= 0)
|
||||
return -1;
|
||||
nm[rv] = '\0';
|
||||
dname = strrchr(nm, '/');
|
||||
if (dname) dname++;
|
||||
strcpy(sd->sys_name, "dev-");
|
||||
strcpy(sd->sys_name+4, dname);
|
||||
|
||||
rv |= sysfs_set_num(sra, sd, "offset", sd->data_offset);
|
||||
rv = sysfs_set_num(sra, sd, "offset", sd->data_offset);
|
||||
rv |= sysfs_set_num(sra, sd, "size", (sd->component_size+1) / 2);
|
||||
if (sra->array.level != LEVEL_CONTAINER) {
|
||||
rv |= sysfs_set_num(sra, sd, "slot", sd->disk.raid_disk);
|
||||
|
|
Loading…
Reference in New Issue