Commit 46da491e authored by Jeremy Rosen's avatar Jeremy Rosen Committed by Peter Korsgaard
Browse files

kmod : protect against architectures without __NR_finit_module



This bug caused udev to fail to load any module, crashing with Illegal
instruction.

The patch was taken from upstream and should be integrated in the next
version of kmod (version 14)

Signed-off-by: default avatarJérémy Rosen <jeremy.rosen@openwide.fr>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 8762110c
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
From 5eac795b8b067842caec32f96d55a7554c3c67f9 Mon Sep 17 00:00:00 2001
From: Jan Luebbe <jlu@pengutronix.de>
Date: Thu, 02 May 2013 14:47:12 +0000
Subject: libkmod: Avoid calling syscall() with -1

At least in qemu 1.4.1 for vexpress/arm-cortexa9, this resulted in an
illegal instruction error. Solve that by returning an error when
__NR_finit_module is -1.
---
diff --git a/libkmod/missing.h b/libkmod/missing.h
index edb88b9..b45bbe2 100644
--- a/libkmod/missing.h
+++ b/libkmod/missing.h
@@ -20,8 +20,15 @@
 #endif
 
 #ifndef HAVE_FINIT_MODULE
+#include <errno.h>
+
 static inline int finit_module(int fd, const char *uargs, int flags)
 {
+	if (__NR_finit_module == -1) {
+		errno = ENOSYS;
+		return -1;
+	}
+
 	return syscall(__NR_finit_module, fd, uargs, flags);
 }
 #endif
--
cgit v0.9.2