- zdev: cleanup patches to fix warnings (#2223304)

- zdev: add missing label in the udev-rules (#2222900)
- Resolves: #2223304 #2222900
This commit is contained in:
Dan Horák 2023-07-17 13:36:39 +02:00
parent 8432cc9764
commit 466e27d164
2 changed files with 197 additions and 4 deletions

View File

@ -1,7 +1,8 @@
From 493af760ed47454f5719f05a6e6316f43a3be98a Mon Sep 17 00:00:00 2001 From 368c5581b8e7f9f796764c3f697babd63d637767 Mon Sep 17 00:00:00 2001
From: Stefan Haberland <sth@linux.ibm.com> From: Stefan Haberland <sth@linux.ibm.com>
Date: Mon, 8 May 2023 14:52:54 +0200 Date: Mon, 8 May 2023 14:52:54 +0200
Subject: [PATCH] zdev: add support for autoquiesce related sysfs attributes Subject: [PATCH 1/4] zdev: add support for autoquiesce related sysfs
attributes (#2196517)
Autoquiesce is a mechanism that tells Linux to stop issuing I/Os to a Autoquiesce is a mechanism that tells Linux to stop issuing I/Os to a
specific DASD after certain events. specific DASD after certain events.
@ -16,6 +17,7 @@ aq_timeouts - Configure the number of timeouts before autoquiesce.
Signed-off-by: Stefan Haberland <sth@linux.ibm.com> Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com> Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Steffen Eiden <seiden@linux.ibm.com> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
(cherry picked from commit 493af760ed47454f5719f05a6e6316f43a3be98a)
--- ---
zdev/src/dasd.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ zdev/src/dasd.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+) 1 file changed, 65 insertions(+)
@ -104,5 +106,191 @@ index f9fd231..4330229 100644
), ),
.unknown_dev_attribs = 1, .unknown_dev_attribs = 1,
-- --
2.39.2 2.40.1
From 21a9e00ffeb5ef885ad52b73f2724cef6d1ae73d Mon Sep 17 00:00:00 2001
From: Vineeth Vijayan <vneethv@linux.ibm.com>
Date: Wed, 7 Jun 2023 14:10:56 +0200
Subject: [PATCH 2/4] zdev: add proper value input for the ZDEV_SITE_ID key
(#2223304)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
udev does not allow an empty value for keys when importing output
from an external program. Providing an empty value for any key
invokes a warning during the parsing. Currently, ZDEV_SITE_ID for
fallback sites are not assigned any value. Add an empty double
quotes as the value in case of failover sites.
This modification is tested on udevadm version 253 on fedora38.
Also verify that the ZDEV_SITE_ID is properly written, if not log
the error.
Fixes: c8ad5f57d0fc ("zdev: modify zdev_id to read the site_id from loadparm")
Reported-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
(cherry picked from commit 27902c91064f5900fa0ae8116d3e1d0bcd9477bc)
---
zdev/src/zdev_id.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/zdev/src/zdev_id.c b/zdev/src/zdev_id.c
index c341d31..9ad9961 100644
--- a/zdev/src/zdev_id.c
+++ b/zdev/src/zdev_id.c
@@ -213,16 +213,28 @@ out:
static void write_zdev_site_id(int site_id)
{
FILE *fd;
+ int rc;
fd = fopen(ZDEV_SITE_ID_FILE, "w");
if (!fd)
- err(1, "Could not write to zdev_site_id file");
+ goto err;
+
if (site_id == SITE_FALLBACK)
- fprintf(fd, "ZDEV_SITE_ID=\n");
+ rc = fprintf(fd, "ZDEV_SITE_ID=\"\"\n");
else
- fprintf(fd, "ZDEV_SITE_ID=%d\n", site_id);
+ rc = fprintf(fd, "ZDEV_SITE_ID=%d\n", site_id);
- fclose(fd);
+ if (rc < 0) {
+ fclose(fd);
+ goto err;
+ }
+
+ if (fclose(fd))
+ goto err;
+
+ return;
+err:
+ err(1, "Could not write to zdev_site_id file");
}
/* Read the loadparm and extract the current site_id.
@@ -265,7 +277,7 @@ static void process_loadparm(const char *filename)
out:
write_zdev_site_id(site_id);
if (site_id == SITE_FALLBACK)
- printf("ZDEV_SITE_ID=\n");
+ printf("ZDEV_SITE_ID=\"\"\n");
else
printf("ZDEV_SITE_ID=%d\n", site_id);
}
--
2.40.1
From 90bab830c617cbecdc51ef9f6f2a19d14e6445c5 Mon Sep 17 00:00:00 2001
From: Vineeth Vijayan <vneethv@linux.ibm.com>
Date: Wed, 7 Jun 2023 14:10:57 +0200
Subject: [PATCH 3/4] zdev: use rename-file to avoid any symlinks created
(#2223304)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
During the boot, the ZDEV_SITE_ID is derived with the help
of loadparm and will be saved in ZDEV_SITE_ID_FILE, which
will be the used by the udev-rules.
ZDEV_SITE_ID_FILE creation can have a surface of symlink attack
as we are directly using the fopen and fprintf on it. To avoid
this, make sure that we are writing the ZDEV_SITE_ID to a temporary
file, which will then be renamed to ZDEV_SITE_ID_FILE, which will
remove all the existing symlinks associated with the target file.
Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
(cherry picked from commit 09c01e580abc519976c8e20c5d867b3d1a31e062)
---
zdev/src/zdev_id.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/zdev/src/zdev_id.c b/zdev/src/zdev_id.c
index 9ad9961..2464b16 100644
--- a/zdev/src/zdev_id.c
+++ b/zdev/src/zdev_id.c
@@ -213,9 +213,16 @@ out:
static void write_zdev_site_id(int site_id)
{
FILE *fd;
- int rc;
+ int tmpfd, rc;
+ const char zdev_id_file[] = ZDEV_SITE_ID_FILE;
+ char zdev_id_tmpfile[] = ZDEV_SITE_ID_FILE "-XXXXXX";
- fd = fopen(ZDEV_SITE_ID_FILE, "w");
+ tmpfd = mkstemp(zdev_id_tmpfile);
+ if (tmpfd == -1)
+ goto err;
+
+ /* Open the temp file to use with fprintf */
+ fd = fdopen(tmpfd, "w");
if (!fd)
goto err;
@@ -232,6 +239,12 @@ static void write_zdev_site_id(int site_id)
if (fclose(fd))
goto err;
+ /* Rename the temporary file to ZDEV_SITE_ID_FILE*/
+ if (rename(zdev_id_tmpfile, zdev_id_file) == -1) {
+ remove(zdev_id_tmpfile);
+ goto err;
+ }
+
return;
err:
err(1, "Could not write to zdev_site_id file");
--
2.40.1
From 5e9a117d1da306ad13b46612b709d769c792baae Mon Sep 17 00:00:00 2001
From: Vineeth Vijayan <vneethv@linux.ibm.com>
Date: Mon, 19 Jun 2023 11:32:15 +0200
Subject: [PATCH 4/4] zdev: add missing label in the udev-rules (#2222900)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The udev-rules generated with the current version of chzdev command
is missing the configuration label, incase of auto configuration,
resulting in an ineffective configuration logic.
Add the missing configuration start label for autoconfig.
Fixes: 2e89722ef0ec ("zdev: make site specific udev-rule for ccw")
Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
(cherry picked from commit 2a1a821bb3941ddd341b52068d5c05e06d907355)
---
zdev/src/udev_ccw.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/zdev/src/udev_ccw.c b/zdev/src/udev_ccw.c
index 3375a5e..1881337 100644
--- a/zdev/src/udev_ccw.c
+++ b/zdev/src/udev_ccw.c
@@ -295,6 +295,7 @@ static exit_code_t udev_ccw_write_device_legacy(struct device *dev, bool autocon
}
fprintf(fd, "GOTO=\"%s\"\n", end_label);
fprintf(fd, "\n");
+ fprintf(fd, "LABEL=\"%s\"\n", cfg_label);
write_attr_to_file(fd, state, id);
--
2.40.1

View File

@ -10,7 +10,7 @@
Name: s390utils Name: s390utils
Summary: Utilities and daemons for IBM z Systems Summary: Utilities and daemons for IBM z Systems
Version: 2.27.0 Version: 2.27.0
Release: 1%{?dist} Release: 2%{?dist}
Epoch: 2 Epoch: 2
License: MIT License: MIT
ExclusiveArch: s390 s390x ExclusiveArch: s390 s390x
@ -898,6 +898,11 @@ User-space development files for the s390/s390x architecture.
%changelog %changelog
* Mon Jul 17 2023 Dan Horák <dhorak@redhat.com> - 2:2.27.0-2
- zdev: cleanup patches to fix warnings (#2223304)
- zdev: add missing label in the udev-rules (#2222900)
- Resolves: #2223304 #2222900
* Wed May 31 2023 Dan Horák <dhorak@redhat.com> - 2:2.27.0-1 * Wed May 31 2023 Dan Horák <dhorak@redhat.com> - 2:2.27.0-1
- rebased to 2.27.0 (#2160062) - rebased to 2.27.0 (#2160062)
- lszcrypt fails when querying a specific domain (#2177612) - lszcrypt fails when querying a specific domain (#2177612)