~andersk/ubuntu/raring/kmod/lp1082598

« back to all changes in this revision

Viewing changes to debian/patches/blacklist_aliased

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-09-21 16:05:32 UTC
  • mfrom: (4.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20120921160532-bdsxhmpj5og2ru5h
Tags: 9-2ubuntu1
* Sync with Debian unstable; remaining Ubuntu changes:
  - Ubuntu-specific depmod.d and modprobe.d contents.
  - Mark module-init-tools Multi-Arch: foreign.
  - Don't install Debian's extra/aliases.conf file.
  - Install upstart job instead of the sysvinit script.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Description: make blacklisting work like in module-init-tools
 
2
 Do not load a blacklisted module even if modprobe is invoked with one of
 
3
 its aliases.
 
4
Origin: upstream, commit:6882017f809691d070e4df26414676d0219145d5
 
5
Applied-Upstream: commit:6882017f809691d070e4df26414676d0219145d5
 
6
---
 
7
 
 
8
commit 6882017f809691d070e4df26414676d0219145d5
 
9
Author: Lucas De Marchi <lucas.demarchi@profusion.mobi>
 
10
Date:   Fri Aug 17 09:38:05 2012 -0300
 
11
 
 
12
    libkmod-module: Add KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY flag
 
13
    
 
14
    With this flag kmod_module_probe_insert_module() check if module is
 
15
    blacklisted only if it's also an alias. This is needed in order to allow
 
16
    blacklisting a module by name and effectively blacklisting all its
 
17
    aliases as module-init-tools was doing.
 
18
    
 
19
    Before this patch we could load pcspkr module as follows:
 
20
    
 
21
        /etc/modprobe.d/test.conf:
 
22
                alias yay pcspkr
 
23
                blacklist pcspkr
 
24
    
 
25
        $ modprobe yay
 
26
    
 
27
    Now libkmod has support to blacklist "yay" because "pcspkr" is blacklisted.
 
28
 
 
29
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
 
30
index 1271c70..9756d57 100644
 
31
--- a/libkmod/libkmod-module.c
 
32
+++ b/libkmod/libkmod-module.c
 
33
@@ -1172,9 +1172,15 @@ KMOD_EXPORT int kmod_module_probe_insert_module(struct kmod_module *mod,
 
34
                        return 0;
 
35
        }
 
36
 
 
37
-       err = flags & (KMOD_PROBE_APPLY_BLACKLIST |
 
38
-                                       KMOD_PROBE_APPLY_BLACKLIST_ALL);
 
39
-       if (err != 0) {
 
40
+       /*
 
41
+        * Ugly assignement + check. We need to check if we were told to check
 
42
+        * blacklist and also return the reason why we failed.
 
43
+        * KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY will take effect only if the
 
44
+        * module is an alias, so we also need to check it
 
45
+        */
 
46
+       if ((mod->alias != NULL && ((err = flags & KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY)))
 
47
+                       || (err = flags & KMOD_PROBE_APPLY_BLACKLIST_ALL)
 
48
+                       || (err = flags & KMOD_PROBE_APPLY_BLACKLIST)) {
 
49
                if (module_is_blacklisted(mod))
 
50
                        return err;
 
51
        }
 
52
diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h
 
53
index 2f813a8..d03ab19 100644
 
54
--- a/libkmod/libkmod.h
 
55
+++ b/libkmod/libkmod.h
 
56
@@ -161,6 +161,7 @@ enum kmod_probe {
 
57
        /* codes below can be used in return value, too */
 
58
        KMOD_PROBE_APPLY_BLACKLIST_ALL =        0x10000,
 
59
        KMOD_PROBE_APPLY_BLACKLIST =            0x20000,
 
60
+       KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY = 0x40000,
 
61
 };
 
62
 
 
63
 /* Flags to kmod_module_apply_filter() */
 
64
commit 36ddee65620f97c34d79815a24c65993e0c84754
 
65
Author: Lucas De Marchi <lucas.demarchi@profusion.mobi>
 
66
Date:   Fri Aug 17 09:42:47 2012 -0300
 
67
 
 
68
    modprobe: Unconditionally use KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY
 
69
    
 
70
    This fixes a change in behavior regarding kmod and module-init-tools:
 
71
    when trying to load a module by alias, we should check if it's
 
72
    blacklisted, regardless of the command line arguments passed.
 
73
    
 
74
    This was reported by "Dmitry V. Levin <ldv@altlinux.org>".
 
75
 
 
76
diff --git a/tools/modprobe.c b/tools/modprobe.c
 
77
index f8a2805..b108112 100644
 
78
--- a/tools/modprobe.c
 
79
+++ b/tools/modprobe.c
 
80
@@ -582,6 +582,7 @@ static int insmod(struct kmod_ctx *ctx, const char *alias,
 
81
        if (do_show || verbose > DEFAULT_VERBOSE)
 
82
                show = &print_action;
 
83
 
 
84
+       flags |= KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY;
 
85
 
 
86
        if (use_blacklist)
 
87
                flags |= KMOD_PROBE_APPLY_BLACKLIST;