From: Yousong Zhou Date: Fri, 13 Jan 2017 17:00:35 +0000 (+0800) Subject: kmodloader: make insert_module() idempotent X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fubox.git;a=commitdiff_plain;h=14839f0acc15197e360299b7f714b8f9ff97ba17 kmodloader: make insert_module() idempotent To fix spurious error messages in the following situation 1. scan loaded modules 2. load wireguard.ko and the module itself will request xt_hashlimit to be loaded 3. xt_hashlimit is still in PROBE state here so we also try to load it, but init_module() returns EEXIST Signed-off-by: Yousong Zhou --- diff --git a/kmodloader.c b/kmodloader.c index bcb213b..729027a 100644 --- a/kmodloader.c +++ b/kmodloader.c @@ -574,8 +574,11 @@ static int insert_module(char *path, const char *options) } data = malloc(s.st_size); - if (read(fd, data, s.st_size) == s.st_size) + if (read(fd, data, s.st_size) == s.st_size) { ret = syscall(__NR_init_module, data, (unsigned long) s.st_size, options); + if (errno == EEXIST) + ret = 0; + } else ULOG_ERR("failed to read full module %s\n", path);