Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15
mdadm.12486
0087-Query-Handle-error-returned-by-fstat.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0087-Query-Handle-error-returned-by-fstat.patch of Package mdadm.12486
From 8d0cd09d73a9a9d57ee73b7a79114e881dad1507 Mon Sep 17 00:00:00 2001 From: Jes Sorensen <jsorensen@fb.com> Date: Thu, 13 Apr 2017 11:53:21 -0400 Subject: [PATCH] Query: Handle error returned by fstat() Git-commit: 8d0cd09d73a9a9d57ee73b7a79114e881dad1507 Patch-mainline: mdadm-4.0+ References: bsc#1069165, bsc#1069167, bsc#1068030 We shouldn't ignore any error returned by fstat() even if open() didn't fail. Signed-off-by: Jes Sorensen <jsorensen@fb.com> Signed-off-by: Coly Li <colyli@suse.de> --- Query.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Query.c b/Query.c index bea273f..0d18da4 100644 --- a/Query.c +++ b/Query.c @@ -32,22 +32,21 @@ int Query(char *dev) * whether it is an md device and whether it has * a superblock */ - int fd = open(dev, O_RDONLY); - int ioctlerr; + int fd; + int ioctlerr, staterr; int superror; struct mdinfo info; mdu_array_info_t array; struct supertype *st = NULL; - unsigned long long larray_size; struct stat stb; char *mddev; mdu_disk_info_t disc; char *activity; + fd = open(dev, O_RDONLY); if (fd < 0){ - pr_err("cannot open %s: %s\n", - dev, strerror(errno)); + pr_err("cannot open %s: %s\n", dev, strerror(errno)); return 1; } @@ -56,9 +55,12 @@ int Query(char *dev) else ioctlerr = 0; - fstat(fd, &stb); + if (fstat(fd, &stb) < 0) + staterr = errno; + else + staterr = 0; - if (!ioctlerr) { + if (!ioctlerr && !staterr) { if (!get_dev_size(fd, NULL, &larray_size)) larray_size = 0; } @@ -68,6 +70,9 @@ int Query(char *dev) else if (ioctlerr) printf("%s: is an md device, but gives \"%s\" when queried\n", dev, strerror(ioctlerr)); + else if (staterr) + printf("%s: is not a valid md device, returning %s\n", + dev, strerror(ioctlerr)); else { printf("%s: %s %s %d devices, %d spare%s. Use mdadm --detail for more detail.\n", dev, -- 2.13.6
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor