diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2018-09-16 19:26:25 +0200 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2018-09-16 19:26:25 +0200 |
commit | 4dc1eee385f1b5115976db8d6b60ca0a08ed05ce (patch) | |
tree | 8c2562a28e69949dee07563a8bedc6029d7acc9a /package/system/ubox/patches | |
parent | be049529e6a883601fd47303a05165a6a0b9a4a5 (diff) | |
download | mtk-20170518-4dc1eee385f1b5115976db8d6b60ca0a08ed05ce.zip mtk-20170518-4dc1eee385f1b5115976db8d6b60ca0a08ed05ce.tar.gz mtk-20170518-4dc1eee385f1b5115976db8d6b60ca0a08ed05ce.tar.bz2 |
package/system: probably from OpenWRT
Diffstat (limited to 'package/system/ubox/patches')
-rw-r--r-- | package/system/ubox/patches/001-insmod.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/package/system/ubox/patches/001-insmod.patch b/package/system/ubox/patches/001-insmod.patch new file mode 100644 index 0000000..af858d9 --- /dev/null +++ b/package/system/ubox/patches/001-insmod.patch @@ -0,0 +1,47 @@ +Index: ubox-2015-02-25.1/kmodloader.c +=================================================================== +--- ubox-2015-02-25.1.orig/kmodloader.c ++++ ubox-2015-02-25.1/kmodloader.c +@@ -483,14 +483,15 @@ static int insert_module(char *path, con + return ret; + } + +- data = malloc(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); +- else ++ data = mmap(NULL, s.st_size, PROT_READ, ++ MAP_PRIVATE, fd, 0); ++ if (data == MAP_FAILED) + ERROR("failed to read full module %s\n", path); ++ else ++ ret = syscall(__NR_init_module, data, (unsigned long) s.st_size, options); + ++ munmap(data, s.st_size); + close(fd); +- free(data); + + return ret; + } +@@ -574,15 +575,18 @@ static int main_insmod(int argc, char ** + if (argc < 2) + return print_insmod_usage(); + ++ if (init_module_folders()) ++ return -1; ++ ++ if (scan_loaded_modules()) ++ return -1; ++ + name = get_module_name(argv[1]); + if (!name) { + ERROR("cannot find module - %s\n", argv[1]); + return -1; + } + +- if (scan_loaded_modules()) +- return -1; +- + if (find_module(name)) { + ERROR("module is already loaded - %s\n", name); + return -1; |