mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
linux-modules: Correctly propagate error code from 'init_module'.
* gnu/packages/patches/guile-linux-syscalls.patch (scm_load_linux_module): Leave 'errno' unchanged when ERR != 0. * gnu/build/linux-modules.scm (load-linux-module*): Check for the errno value of ARGS to determine whether the module was already loaded.
This commit is contained in:
parent
08b1990a93
commit
7c4885f0d7
2 changed files with 3 additions and 12 deletions
|
@ -160,11 +160,7 @@ (define (slurp module)
|
||||||
(lambda args
|
(lambda args
|
||||||
;; If this module was already loaded and we're in modprobe style, ignore
|
;; If this module was already loaded and we're in modprobe style, ignore
|
||||||
;; the error.
|
;; the error.
|
||||||
|
(unless (and recursive? (= EEXIST (system-error-errno args)))
|
||||||
;; FIXME: Use errno once 'guile-linux-syscalls.patch' provides a useful
|
|
||||||
;; errno here.
|
|
||||||
(unless (and recursive?
|
|
||||||
(module-loaded? (string-drop-right (basename file) 3)))
|
|
||||||
(apply throw args)))))
|
(apply throw args)))))
|
||||||
|
|
||||||
;;; linux-modules.scm ends here
|
;;; linux-modules.scm ends here
|
||||||
|
|
|
@ -7,7 +7,7 @@ diff --git a/libguile/posix.c b/libguile/posix.c
|
||||||
index 324f21b..cbee94d 100644
|
index 324f21b..cbee94d 100644
|
||||||
--- a/libguile/posix.c
|
--- a/libguile/posix.c
|
||||||
+++ b/libguile/posix.c
|
+++ b/libguile/posix.c
|
||||||
@@ -2286,6 +2286,266 @@ scm_init_popen (void)
|
@@ -2286,6 +2286,261 @@ scm_init_popen (void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -84,12 +84,7 @@ index 324f21b..cbee94d 100644
|
||||||
+ free (c_options);
|
+ free (c_options);
|
||||||
+
|
+
|
||||||
+ if (err != 0)
|
+ if (err != 0)
|
||||||
+ {
|
+ SCM_SYSERROR;
|
||||||
+ /* XXX: `insmod' actually provides better translation of some of
|
|
||||||
+ the error codes. */
|
|
||||||
+ errno = err;
|
|
||||||
+ SCM_SYSERROR;
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ return SCM_UNSPECIFIED;
|
+ return SCM_UNSPECIFIED;
|
||||||
+}
|
+}
|
||||||
|
|
Loading…
Reference in a new issue