summaryrefslogtreecommitdiff
path: root/core/kmod
diff options
context:
space:
mode:
authorParabola <dev@list.parabolagnulinux.org>2012-02-15 20:35:57 +0000
committerParabola <dev@list.parabolagnulinux.org>2012-02-15 20:35:57 +0000
commit1ffabe284d9f5a4ac055941d9817af71be1e5b54 (patch)
tree2b816cb3cc40a5f3053c8371de5613041272e298 /core/kmod
parent650a87f5a67f6e71d4a56e52139a718d86ebbb46 (diff)
Wed Feb 15 20:35:56 UTC 2012
Diffstat (limited to 'core/kmod')
-rw-r--r--core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch34
-rw-r--r--core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch196
-rw-r--r--core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch34
-rw-r--r--core/kmod/0004-modprobe-remove-0-refcnt-deps.patch52
4 files changed, 0 insertions, 316 deletions
diff --git a/core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch b/core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch
deleted file mode 100644
index b69d095d3..000000000
--- a/core/kmod/0001-partially-fix-parsing-of-alias-with-dots.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From cdaf4b2f3ef60365c6b8006a63410368a7b38f39 Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Tue, 31 Jan 2012 00:12:32 -0500
-Subject: [PATCH 1/4] partially fix parsing of alias with dots
-
----
- libkmod/libkmod-util.c | 4 +---
- 1 files changed, 1 insertions(+), 3 deletions(-)
-
-diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c
-index 7c2611b..6a9f697 100644
---- a/libkmod/libkmod-util.c
-+++ b/libkmod/libkmod-util.c
-@@ -134,8 +134,7 @@ inline int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len)
- case ']':
- return -EINVAL;
- case '[':
-- while (alias[s] != ']' &&
-- alias[s] != '.' && alias[s] != '\0')
-+ while (alias[s] != ']' && alias[s] != '\0')
- s++;
-
- if (alias[s] != ']')
-@@ -144,7 +143,6 @@ inline int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len)
- s++;
- break;
- case '\0':
-- case '.':
- goto finish;
- default:
- buf[s] = c;
---
-1.7.9
-
diff --git a/core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch b/core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch
deleted file mode 100644
index 76cc35049..000000000
--- a/core/kmod/0002-libkmod-module-used-shared-code-in-module-creation.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-From 1d2f64689b2456ade81d6d489c4f5bfb5fdb92fd Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Tue, 31 Jan 2012 00:13:43 -0500
-Subject: [PATCH 2/4] libkmod-module: used shared code in module creation
-
----
- libkmod/libkmod-module.c | 135 ++++++++++++++++++++++++++-------------------
- 1 files changed, 78 insertions(+), 57 deletions(-)
-
-diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
-index 47b1709..48e4aa1 100644
---- a/libkmod/libkmod-module.c
-+++ b/libkmod/libkmod-module.c
-@@ -162,6 +162,76 @@ fail:
- return err;
- }
-
-+/*
-+ * Memory layout with alias:
-+ *
-+ * struct kmod_module {
-+ * hashkey -----.
-+ * alias -----. |
-+ * name ----. | |
-+ * } | | |
-+ * name <----------' | |
-+ * alias <-----------' |
-+ * name\alias <--------'
-+ *
-+ * Memory layout without alias:
-+ *
-+ * struct kmod_module {
-+ * hashkey ---.
-+ * alias -----|----> NULL
-+ * name ----. |
-+ * } | |
-+ * name <----------'-'
-+ *
-+ * @key is "name\alias" or "name" (in which case alias == NULL)
-+ */
-+static int kmod_module_new(struct kmod_ctx *ctx, const char *key,
-+ const char *name, size_t namelen,
-+ const char *alias, size_t aliaslen,
-+ struct kmod_module **mod)
-+{
-+ struct kmod_module *m;
-+ size_t keylen;
-+
-+ m = kmod_pool_get_module(ctx, key);
-+ if (m != NULL) {
-+ *mod = kmod_module_ref(m);
-+ return 0;
-+ }
-+
-+ if (alias == NULL)
-+ keylen = namelen;
-+ else
-+ keylen = namelen + aliaslen + 1;
-+
-+ m = malloc(sizeof(*m) + (alias == NULL ? 1 : 2) * (keylen + 1));
-+ if (m == NULL) {
-+ free(m);
-+ return -ENOMEM;
-+ }
-+
-+ memset(m, 0, sizeof(*m));
-+
-+ m->ctx = kmod_ref(ctx);
-+ m->name = (char *)m + sizeof(*m);
-+ memcpy(m->name, key, keylen + 1);
-+ if (alias == NULL) {
-+ m->hashkey = m->name;
-+ m->alias = NULL;
-+ } else {
-+ m->name[namelen] = '\0';
-+ m->alias = m->name + namelen + 1;
-+ m->hashkey = m->name + keylen + 1;
-+ memcpy(m->hashkey, key, keylen + 1);
-+ }
-+
-+ m->refcount = 1;
-+ kmod_pool_add_module(ctx, m, m->hashkey);
-+ *mod = m;
-+
-+ return 0;
-+}
-+
- /**
- * kmod_module_new_from_name:
- * @ctx: kmod library context
-@@ -188,54 +258,15 @@ KMOD_EXPORT int kmod_module_new_from_name(struct kmod_ctx *ctx,
- const char *name,
- struct kmod_module **mod)
- {
-- struct kmod_module *m;
- size_t namelen;
- char name_norm[PATH_MAX];
-- char *namesep;
-
- if (ctx == NULL || name == NULL || mod == NULL)
- return -ENOENT;
-
-- if (alias_normalize(name, name_norm, &namelen) < 0) {
-- DBG(ctx, "invalid alias: %s\n", name);
-- return -EINVAL;
-- }
-+ modname_normalize(name, name_norm, &namelen);
-
-- m = kmod_pool_get_module(ctx, name_norm);
-- if (m != NULL) {
-- *mod = kmod_module_ref(m);
-- return 0;
-- }
--
-- namesep = strchr(name_norm, '/');
-- m = malloc(sizeof(*m) + (namesep == NULL ? 1 : 2) * namelen + 2);
-- if (m == NULL) {
-- free(m);
-- return -ENOMEM;
-- }
--
-- memset(m, 0, sizeof(*m));
--
-- m->ctx = kmod_ref(ctx);
-- m->name = (char *)m + sizeof(*m);
-- memcpy(m->name, name_norm, namelen + 1);
--
-- if (namesep) {
-- size_t len = namesep - name_norm;
--
-- m->name[len] = '\0';
-- m->alias = m->name + len + 1;
-- m->hashkey = m->name + namelen + 1;
-- memcpy(m->hashkey, name_norm, namelen + 1);
-- } else {
-- m->hashkey = m->name;
-- }
--
-- m->refcount = 1;
-- kmod_pool_add_module(ctx, m, m->hashkey);
-- *mod = m;
--
-- return 0;
-+ return kmod_module_new(ctx, name_norm, name_norm, namelen, NULL, 0, mod);
- }
-
- int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias,
-@@ -251,9 +282,9 @@ int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias,
-
- memcpy(key, name, namelen);
- memcpy(key + namelen + 1, alias, aliaslen + 1);
-- key[namelen] = '/';
-+ key[namelen] = '\\';
-
-- err = kmod_module_new_from_name(ctx, key, mod);
-+ err = kmod_module_new(ctx, key, name, namelen, alias, aliaslen, mod);
- if (err < 0)
- return err;
-
-@@ -323,7 +354,7 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx,
- free(abspath);
- else {
- ERR(ctx, "kmod_module '%s' already exists with different path: new-path='%s' old-path='%s'\n",
-- name, abspath, m->path);
-+ name, abspath, m->path);
- free(abspath);
- return -EEXIST;
- }
-@@ -332,21 +363,11 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx,
- return 0;
- }
-
-- m = malloc(sizeof(*m) + namelen + 1);
-- if (m == NULL)
-- return -errno;
--
-- memset(m, 0, sizeof(*m));
-+ err = kmod_module_new(ctx, name, name, namelen, NULL, 0, &m);
-+ if (err < 0)
-+ return err;
-
-- m->ctx = kmod_ref(ctx);
-- m->name = (char *)m + sizeof(*m);
-- memcpy(m->name, name, namelen + 1);
- m->path = abspath;
-- m->hashkey = m->name;
-- m->refcount = 1;
--
-- kmod_pool_add_module(ctx, m, m->hashkey);
--
- *mod = m;
-
- return 0;
---
-1.7.9
-
diff --git a/core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch b/core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch
deleted file mode 100644
index 5bbc93a90..000000000
--- a/core/kmod/0003-modprobe-handle-all-error-returns-from-init_module.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fdf78d80d298353c29e1fe8c00602669dd9662bb Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Mon, 30 Jan 2012 23:05:26 -0500
-Subject: [PATCH 3/4] modprobe: handle all error returns from init_module
-
----
- tools/kmod-modprobe.c | 4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c
-index 3e51506..c882856 100644
---- a/tools/kmod-modprobe.c
-+++ b/tools/kmod-modprobe.c
-@@ -551,6 +551,8 @@ static int insmod_do_insert_module(struct kmod_module *mod, const char *opts)
-
- err = kmod_module_insert_module(mod, flags, opts);
- switch (err) {
-+ case 0:
-+ break;
- case -EEXIST:
- /*
- * We checked for EEXIST with an earlier call to
-@@ -564,7 +566,7 @@ static int insmod_do_insert_module(struct kmod_module *mod, const char *opts)
- ERR("Module %s already in kernel.\n",
- kmod_module_get_name(mod));
- break;
-- case -EPERM:
-+ default:
- ERR("could not insert '%s': %s\n", kmod_module_get_name(mod),
- strerror(-err));
- break;
---
-1.7.9
-
diff --git a/core/kmod/0004-modprobe-remove-0-refcnt-deps.patch b/core/kmod/0004-modprobe-remove-0-refcnt-deps.patch
deleted file mode 100644
index 80cc73130..000000000
--- a/core/kmod/0004-modprobe-remove-0-refcnt-deps.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 4e3dd21aff55b5bbaa08b037fc2a5625bfffc0a5 Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Mon, 30 Jan 2012 23:39:30 -0500
-Subject: [PATCH 4/4] modprobe: remove 0 refcnt deps
-
----
- tools/kmod-modprobe.c | 15 +++++++++++++--
- 1 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c
-index c882856..bd991a5 100644
---- a/tools/kmod-modprobe.c
-+++ b/tools/kmod-modprobe.c
-@@ -381,7 +381,7 @@ static int rmmod_do_deps_list(struct kmod_list *list, bool stop_on_errors)
- static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies)
- {
- const char *modname = kmod_module_get_name(mod);
-- struct kmod_list *pre = NULL, *post = NULL;
-+ struct kmod_list *pre = NULL, *post = NULL, *deps, *itr;
- const char *cmd = NULL;
- int err;
-
-@@ -422,7 +422,7 @@ static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies)
- rmmod_do_deps_list(post, false);
-
- if (do_dependencies && remove_dependencies) {
-- struct kmod_list *deps = kmod_module_get_dependencies(mod);
-+ deps = kmod_module_get_dependencies(mod);
-
- err = rmmod_do_deps_list(deps, true);
- if (err < 0)
-@@ -451,6 +451,17 @@ static int rmmod_do_module(struct kmod_module *mod, bool do_dependencies)
-
- rmmod_do_deps_list(pre, false);
-
-+ deps = kmod_module_get_dependencies(mod);
-+ if (deps != NULL) {
-+ kmod_list_foreach_reverse(itr, deps) {
-+ struct kmod_module *dep = kmod_module_get_module(itr);
-+ if (kmod_module_get_refcnt(dep) == 0)
-+ rmmod_do_remove_module(dep);
-+ kmod_module_unref(dep);
-+ }
-+ kmod_module_unref_list(deps);
-+ }
-+
- error:
- kmod_module_unref_list(pre);
- kmod_module_unref_list(post);
---
-1.7.9
-