Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1684326 > unrolled thread
| Started by | Igor Stoppa <igor.stoppa@huawei.com> |
|---|---|
| First post | 2017-07-10 17:10 +0200 |
| Last post | 2017-07-11 06:20 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 3/3] Make LSM Writable Hooks a command line option Igor Stoppa <igor.stoppa@huawei.com> - 2017-07-10 17:10 +0200
Re: [PATCH 3/3] Make LSM Writable Hooks a command line option kbuild test robot <lkp@intel.com> - 2017-07-11 06:20 +0200
| From | Igor Stoppa <igor.stoppa@huawei.com> |
|---|---|
| Date | 2017-07-10 17:10 +0200 |
| Subject | [PATCH 3/3] Make LSM Writable Hooks a command line option |
| Message-ID | <u1ItY-6DH-35@gated-at.bofh.it> |
This patch shows how it is possible to take advantage of pmalloc:
instead of using the build-time option __lsm_ro_after_init, to decide if
it is possible to keep the hooks modifiable, now this becomes a
boot-time decision, based on the kernel command line.
This patch relies on:
"Convert security_hook_heads into explicit array of struct list_head"
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
to break free from the static constraint imposed by the previous
hardening model, based on __ro_after_init.
The default value is disabled, unless SE Linux debugging is turned on.
Signed-off-by: Igor Stoppa <igor.stoppa@huawei.com>
CC: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
security/security.c | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/security/security.c b/security/security.c
index 44c47b6..c7b4670 100644
--- a/security/security.c
+++ b/security/security.c
@@ -27,6 +27,7 @@
#include <linux/personality.h>
#include <linux/backing-dev.h>
#include <linux/string.h>
+#include <linux/pmalloc.h>
#include <net/flow.h>
#define MAX_LSM_EVM_XATTR 2
@@ -34,10 +35,19 @@
/* Maximum number of letters for an LSM name string */
#define SECURITY_NAME_MAX 10
-static struct list_head hook_heads[LSM_MAX_HOOK_INDEX]
- __lsm_ro_after_init;
static ATOMIC_NOTIFIER_HEAD(lsm_notifier_chain);
+static int dynamic_lsm = IS_ENABLED(CONFIG_SECURITY_SELINUX_DISABLE);
+
+static __init int set_dynamic_lsm(char *str)
+{
+ get_option(&str, &dynamic_lsm);
+ return 0;
+}
+early_param("dynamic_lsm", set_dynamic_lsm);
+
+static struct list_head *hook_heads;
+static struct gen_pool *sec_pool;
char *lsm_names;
/* Boot-time LSM user choice */
static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] =
@@ -62,6 +72,11 @@ int __init security_init(void)
{
enum security_hook_index i;
+ sec_pool = pmalloc_create_pool("security", PMALLOC_DEFAULT_ALLOC_ORDER);
+ BUG_ON(!sec_pool);
+ hook_heads = pmalloc(sec_pool,
+ sizeof(struct list_head) * LSM_MAX_HOOK_INDEX);
+ BUG_ON(!hook_heads);
for (i = 0; i < LSM_MAX_HOOK_INDEX; i++)
INIT_LIST_HEAD(&hook_heads[i]);
pr_info("Security Framework initialized\n");
@@ -77,7 +92,8 @@ int __init security_init(void)
* Load all the remaining security modules.
*/
do_security_initcalls();
-
+ if (!dynamic_lsm)
+ pmalloc_protect_pool(sec_pool);
return 0;
}
--
2.9.3
[toc] | [next] | [standalone]
| From | kbuild test robot <lkp@intel.com> |
|---|---|
| Date | 2017-07-11 06:20 +0200 |
| Message-ID | <u1UOt-5Ta-3@gated-at.bofh.it> |
| In reply to | #1684326 |
[Multipart message — attachments visible in raw view] — view raw
Hi Igor,
[auto build test ERROR on linus/master]
[cannot apply to v4.12]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Igor-Stoppa/mm-security-ro-protection-for-dynamic-data/20170711-084116
config: score-spct6600_defconfig (attached as .config)
compiler: score-elf-gcc (GCC) 4.9.1 20140622 (prerelease)
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=score
All errors (new ones prefixed by >>):
security/security.o: In function `security_init':
>> security.c:(.init.text+0x68): undefined reference to `pmalloc_create_pool'
>> security.c:(.init.text+0x98): undefined reference to `pmalloc'
>> security.c:(.init.text+0x150): undefined reference to `pmalloc_protect_pool'
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web