Accepting request 659763 from home:michals
Fix changelog: mention all patches. Refesh to upstream patch. * Add depmod-Prevent-module-dependency-files-corruption-du.patch * Add depmod-Prevent-module-dependency-files-missing-durin.patch * Add depmod-shut-up-gcc-insufficinet-buffer-warning.patch * Add depmod-Prevent-module-dependency-files-corruption-du.patch * Add depmod-Prevent-module-dependency-files-missing-durin.patch * Add depmod-shut-up-gcc-insufficinet-buffer-warning.patch OBS-URL: https://build.opensuse.org/request/show/659763 OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=154
This commit is contained in:
parent
38e2a9611a
commit
e6f1948011
@ -1,7 +1,7 @@
|
|||||||
From ff3140310a52ba86af67b3676f542e11e1451bdc Mon Sep 17 00:00:00 2001
|
From a06bacf500d56b72b5f9b121ebf7f6af9e3df185 Mon Sep 17 00:00:00 2001
|
||||||
From: Michal Suchanek <msuchanek@suse.de>
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
Date: Fri, 7 Dec 2018 15:45:41 +0100
|
Date: Mon, 17 Dec 2018 23:46:28 +0100
|
||||||
Subject: [PATCH] depmod: Prevent module dependency files corruption due to
|
Subject: [PATCH] depmod: prevent module dependency files corruption due to
|
||||||
parallel invocation.
|
parallel invocation.
|
||||||
|
|
||||||
Depmod does not use unique filename for temporary files. There is no
|
Depmod does not use unique filename for temporary files. There is no
|
||||||
@ -17,11 +17,11 @@ corrupting existing file.
|
|||||||
|
|
||||||
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
---
|
---
|
||||||
tools/depmod.c | 12 +++++++++---
|
tools/depmod.c | 9 +++++++--
|
||||||
1 file changed, 9 insertions(+), 3 deletions(-)
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/tools/depmod.c b/tools/depmod.c
|
diff --git a/tools/depmod.c b/tools/depmod.c
|
||||||
index 18c0d61b2db3..3b6d16e76160 100644
|
index 18c0d61b2db3..0f7e33ccfd59 100644
|
||||||
--- a/tools/depmod.c
|
--- a/tools/depmod.c
|
||||||
+++ b/tools/depmod.c
|
+++ b/tools/depmod.c
|
||||||
@@ -29,6 +29,7 @@
|
@@ -29,6 +29,7 @@
|
||||||
@ -42,24 +42,18 @@ index 18c0d61b2db3..3b6d16e76160 100644
|
|||||||
|
|
||||||
if (out != NULL)
|
if (out != NULL)
|
||||||
dfd = -1;
|
dfd = -1;
|
||||||
@@ -2412,15 +2416,17 @@ static int depmod_output(struct depmod *depmod, FILE *out)
|
@@ -2416,11 +2420,12 @@ static int depmod_output(struct depmod *depmod, FILE *out)
|
||||||
|
|
||||||
for (itr = depfiles; itr->name != NULL; itr++) {
|
|
||||||
FILE *fp = out;
|
|
||||||
- char tmp[NAME_MAX] = "";
|
|
||||||
+ char tmp[NAME_MAX + 1] = "";
|
|
||||||
int r, ferr;
|
int r, ferr;
|
||||||
|
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
- int flags = O_CREAT | O_TRUNC | O_WRONLY;
|
- int flags = O_CREAT | O_TRUNC | O_WRONLY;
|
||||||
+ int flags = O_CREAT | O_TRUNC | O_WRONLY | O_EXCL;
|
+ int flags = O_CREAT | O_EXCL | O_WRONLY;
|
||||||
int mode = 0644;
|
int mode = 0644;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
- snprintf(tmp, sizeof(tmp), "%s.tmp", itr->name);
|
- snprintf(tmp, sizeof(tmp), "%s.tmp", itr->name);
|
||||||
+ snprintf(tmp, sizeof(tmp), "%s.%i.%li.%li", itr->name, getpid(),
|
+ snprintf(tmp, sizeof(tmp), "%s.%i.%li.%li", itr->name, getpid(),
|
||||||
+ tv.tv_usec, tv.tv_sec);
|
+ tv.tv_usec, tv.tv_sec);
|
||||||
+ tmp[NAME_MAX] = 0;
|
|
||||||
fd = openat(dfd, tmp, flags, mode);
|
fd = openat(dfd, tmp, flags, mode);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
ERR("openat(%s, %s, %o, %o): %m\n",
|
ERR("openat(%s, %s, %o, %o): %m\n",
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
From 3a48513ff3b5ab0b19696bc4c0fabb351bd62afb Mon Sep 17 00:00:00 2001
|
From c2996b5fa880e81f63c25e80a4157b2239e32c5d Mon Sep 17 00:00:00 2001
|
||||||
From: Michal Suchanek <msuchanek@suse.de>
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
Date: Mon, 10 Dec 2018 15:30:07 +0100
|
Date: Mon, 10 Dec 2018 22:29:32 +0100
|
||||||
Subject: [PATCH] depmod: Prevent module dependency files missing during depmod
|
Subject: [PATCH] depmod: prevent module dependency files missing during depmod
|
||||||
invocation.
|
invocation
|
||||||
|
|
||||||
Depmod deletes the module dependency files before moving the temporary
|
depmod deletes the module dependency files before moving the temporary
|
||||||
files in their place. This results in user seeing no dependency files
|
files in their place. This results in user seeing no dependency files
|
||||||
while they are updated. Remove the unlink call. The rename call should
|
while they are updated. Remove the unlink call. The rename call should
|
||||||
suffice to move the newa file in place and remove unlink the old one. It
|
suffice to move the new file in place and unlink the old one. It should
|
||||||
should also do both atomically so there is no window whn no dependency
|
also do both atomically so there is no window when no dependency file
|
||||||
file exists.
|
exists.
|
||||||
|
|
||||||
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
---
|
---
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From af9a6e3754b6fa4e5cefb70aa6621b2f52ca94f1 Mon Sep 17 00:00:00 2001
|
From 4a894aeaebf69166e6344d8a82c2600a1d4c0d08 Mon Sep 17 00:00:00 2001
|
||||||
From: Michal Suchanek <msuchanek@suse.de>
|
From: Michal Suchanek <msuchanek@suse.de>
|
||||||
Date: Mon, 10 Dec 2018 16:36:03 +0100
|
Date: Mon, 10 Dec 2018 22:29:34 +0100
|
||||||
Subject: [PATCH] depmod: shut up gcc insufficinet buffer warning.
|
Subject: [PATCH] depmod: shut up gcc insufficinet buffer warning
|
||||||
|
|
||||||
In a couple of places depmod concatenates the module directory and filename
|
In a couple of places depmod concatenates the module directory and filename
|
||||||
with snprintf. This can technically overflow creating an unterminated string if
|
with snprintf. This can technically overflow creating an unterminated string if
|
||||||
@ -10,25 +10,28 @@ depmod. This avoids the snprintf, the extra buffer on stack, and the gcc
|
|||||||
warning. It may even fix a corner case when the module direcotry name is just
|
warning. It may even fix a corner case when the module direcotry name is just
|
||||||
under PATH_MAX.
|
under PATH_MAX.
|
||||||
|
|
||||||
|
[ Lucas: fix up coding style and closing fd on error path ]
|
||||||
|
|
||||||
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
|
||||||
---
|
---
|
||||||
tools/depmod.c | 51 ++++++++++++++++++++++++++++++++++----------------
|
tools/depmod.c | 54 +++++++++++++++++++++++++++++++++++---------------
|
||||||
1 file changed, 35 insertions(+), 16 deletions(-)
|
1 file changed, 38 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
diff --git a/tools/depmod.c b/tools/depmod.c
|
diff --git a/tools/depmod.c b/tools/depmod.c
|
||||||
index 3b6d16e76160..6fca30a2f3e2 100644
|
index 0f7e33ccfd59..391afe9fe0a0 100644
|
||||||
--- a/tools/depmod.c
|
--- a/tools/depmod.c
|
||||||
+++ b/tools/depmod.c
|
+++ b/tools/depmod.c
|
||||||
@@ -1389,19 +1389,42 @@ static int depmod_modules_build_array(struct depmod *depmod)
|
@@ -1389,19 +1389,45 @@ static int depmod_modules_build_array(struct depmod *depmod)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static FILE * dfdopen(const char * dname, const char * filename, int flags, const char * mode)
|
+static FILE *dfdopen(const char *dname, const char *filename, int flags,
|
||||||
+ {
|
+ const char *mode)
|
||||||
|
+{
|
||||||
+ int fd, dfd;
|
+ int fd, dfd;
|
||||||
+ FILE * ret;
|
+ FILE *ret;
|
||||||
+
|
+
|
||||||
+ dfd = open(dname, flags);
|
+ dfd = open(dname, O_RDONLY);
|
||||||
+ if (dfd < 0) {
|
+ if (dfd < 0) {
|
||||||
+ WRN("could not open directory %s: %m\n", dname);
|
+ WRN("could not open directory %s: %m\n", dname);
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
@ -40,8 +43,10 @@ index 3b6d16e76160..6fca30a2f3e2 100644
|
|||||||
+ ret = NULL;
|
+ ret = NULL;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ ret = fdopen(fd, mode);
|
+ ret = fdopen(fd, mode);
|
||||||
+ if (!ret)
|
+ if (!ret) {
|
||||||
+ WRN("could not associate stream with %s: %m\n", filename);
|
+ WRN("could not associate stream with %s: %m\n", filename);
|
||||||
|
+ close(fd);
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ close(dfd);
|
+ close(dfd);
|
||||||
+ return ret;
|
+ return ret;
|
||||||
@ -53,7 +58,7 @@ index 3b6d16e76160..6fca30a2f3e2 100644
|
|||||||
{
|
{
|
||||||
- char order_file[PATH_MAX], line[PATH_MAX];
|
- char order_file[PATH_MAX], line[PATH_MAX];
|
||||||
+ char line[PATH_MAX];
|
+ char line[PATH_MAX];
|
||||||
+ const char * order_file = "modules.order";
|
+ const char *order_file = "modules.order";
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
unsigned idx = 0, total = 0;
|
unsigned idx = 0, total = 0;
|
||||||
|
|
||||||
@ -69,7 +74,7 @@ index 3b6d16e76160..6fca30a2f3e2 100644
|
|||||||
|
|
||||||
while (fgets(line, sizeof(line), fp) != NULL) {
|
while (fgets(line, sizeof(line), fp) != NULL) {
|
||||||
size_t len = strlen(line);
|
size_t len = strlen(line);
|
||||||
@@ -1409,8 +1432,8 @@ static void depmod_modules_sort(struct depmod *depmod)
|
@@ -1409,8 +1435,8 @@ static void depmod_modules_sort(struct depmod *depmod)
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
continue;
|
continue;
|
||||||
if (line[len - 1] != '\n') {
|
if (line[len - 1] != '\n') {
|
||||||
@ -80,7 +85,7 @@ index 3b6d16e76160..6fca30a2f3e2 100644
|
|||||||
goto corrupted;
|
goto corrupted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2287,18 +2310,14 @@ static int output_builtin_bin(struct depmod *depmod, FILE *out)
|
@@ -2287,18 +2313,14 @@ static int output_builtin_bin(struct depmod *depmod, FILE *out)
|
||||||
{
|
{
|
||||||
FILE *in;
|
FILE *in;
|
||||||
struct index_node *idx;
|
struct index_node *idx;
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
Fri Dec 7 14:55:21 UTC 2018 - Michal Suchanek <msuchanek@suse.de>
|
Fri Dec 7 14:55:21 UTC 2018 - Michal Suchanek <msuchanek@suse.de>
|
||||||
|
|
||||||
- Fix module dependency file corruption on parallel invocation (bsc#1118629).
|
- Fix module dependency file corruption on parallel invocation (bsc#1118629).
|
||||||
Add depmod-Prevent-module-dependency-files-corruption-due-to-pa.patch
|
* Add depmod-Prevent-module-dependency-files-corruption-du.patch
|
||||||
|
* Add depmod-Prevent-module-dependency-files-missing-durin.patch
|
||||||
|
* Add depmod-shut-up-gcc-insufficinet-buffer-warning.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jul 18 08:51:06 UTC 2018 - jengelh@inai.de
|
Wed Jul 18 08:51:06 UTC 2018 - jengelh@inai.de
|
||||||
|
@ -41,8 +41,8 @@ Patch7: libkmod-signature-pkcs-7-fix-crash-when-signer-info-.patch
|
|||||||
Patch8: 0012-modprobe-print-unsupported-status.patch
|
Patch8: 0012-modprobe-print-unsupported-status.patch
|
||||||
Patch9: enum.patch
|
Patch9: enum.patch
|
||||||
Patch10: depmod-Prevent-module-dependency-files-missing-durin.patch
|
Patch10: depmod-Prevent-module-dependency-files-missing-durin.patch
|
||||||
Patch11: depmod-shut-up-gcc-insufficinet-buffer-warning.patch
|
Patch11: depmod-Prevent-module-dependency-files-corruption-du.patch
|
||||||
Patch12: depmod-Prevent-module-dependency-files-corruption-du.patch
|
Patch12: depmod-shut-up-gcc-insufficinet-buffer-warning.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: asn1c
|
BuildRequires: asn1c
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
Fri Dec 7 14:55:21 UTC 2018 - Michal Suchanek <msuchanek@suse.de>
|
Fri Dec 7 14:55:21 UTC 2018 - Michal Suchanek <msuchanek@suse.de>
|
||||||
|
|
||||||
- Fix module dependency file corruption on parallel invocation (bsc#1118629).
|
- Fix module dependency file corruption on parallel invocation (bsc#1118629).
|
||||||
Add depmod-Prevent-module-dependency-files-corruption-due-to-pa.patch
|
* Add depmod-Prevent-module-dependency-files-corruption-du.patch
|
||||||
|
* Add depmod-Prevent-module-dependency-files-missing-durin.patch
|
||||||
|
* Add depmod-shut-up-gcc-insufficinet-buffer-warning.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jul 18 08:51:06 UTC 2018 - jengelh@inai.de
|
Wed Jul 18 08:51:06 UTC 2018 - jengelh@inai.de
|
||||||
|
@ -40,8 +40,8 @@ Patch7: libkmod-signature-pkcs-7-fix-crash-when-signer-info-.patch
|
|||||||
Patch8: 0012-modprobe-print-unsupported-status.patch
|
Patch8: 0012-modprobe-print-unsupported-status.patch
|
||||||
Patch9: enum.patch
|
Patch9: enum.patch
|
||||||
Patch10: depmod-Prevent-module-dependency-files-missing-durin.patch
|
Patch10: depmod-Prevent-module-dependency-files-missing-durin.patch
|
||||||
Patch11: depmod-shut-up-gcc-insufficinet-buffer-warning.patch
|
Patch11: depmod-Prevent-module-dependency-files-corruption-du.patch
|
||||||
Patch12: depmod-Prevent-module-dependency-files-corruption-du.patch
|
Patch12: depmod-shut-up-gcc-insufficinet-buffer-warning.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: asn1c
|
BuildRequires: asn1c
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
|
Loading…
Reference in New Issue
Block a user