From: kbuild test robot <lkp@intel.com>
To: Igor Stoppa <igor.stoppa@huawei.com>
Cc: kbuild-all@01.org, jglisse@redhat.com, keescook@chromium.org,
mhocko@kernel.org, labbott@redhat.com, hch@infradead.org,
willy@infradead.org, cl@linux.com,
linux-security-module@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
kernel-hardening@lists.openwall.com,
Igor Stoppa <igor.stoppa@huawei.com>
Subject: Re: [PATCH 5/6] Pmalloc: self-test
Date: Thu, 8 Feb 2018 01:18:26 +0800 [thread overview]
Message-ID: <201802080158.oKwP7HVR%fengguang.wu@intel.com> (raw)
In-Reply-To: <20180204170056.28772-1-igor.stoppa@huawei.com>
[-- Attachment #1: Type: text/plain, Size: 11849 bytes --]
Hi Igor,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on kees/for-next/pstore]
[also build test ERROR on v4.15]
[cannot apply to linus/master mmotm/master next-20180207]
[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/20180207-171252
base: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
config: i386-randconfig-s1-201805+bisect_validate (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
mm/pmalloc.o: In function `pmalloc_pool_show_chunks':
>> mm/pmalloc.c:100: undefined reference to `gen_pool_for_each_chunk'
mm/pmalloc.o: In function `pmalloc_pool_show_size':
>> mm/pmalloc.c:81: undefined reference to `gen_pool_size'
mm/pmalloc.o: In function `pmalloc_pool_show_avail':
>> mm/pmalloc.c:70: undefined reference to `gen_pool_avail'
mm/pmalloc.o: In function `pmalloc_chunk_free':
>> mm/pmalloc.c:459: undefined reference to `gen_pool_flush_chunk'
mm/pmalloc.o: In function `pmalloc_create_pool':
>> mm/pmalloc.c:173: undefined reference to `gen_pool_create'
>> mm/pmalloc.c:210: undefined reference to `gen_pool_destroy'
mm/pmalloc.o: In function `gen_pool_add':
>> include/linux/genalloc.h:115: undefined reference to `gen_pool_add_virt'
mm/pmalloc.o: In function `pmalloc':
>> mm/pmalloc.c:357: undefined reference to `gen_pool_alloc'
mm/pmalloc.o: In function `gen_pool_add':
>> include/linux/genalloc.h:115: undefined reference to `gen_pool_add_virt'
mm/pmalloc.o: In function `pmalloc':
mm/pmalloc.c:386: undefined reference to `gen_pool_alloc'
mm/pmalloc.o: In function `pmalloc_destroy_pool':
mm/pmalloc.c:484: undefined reference to `gen_pool_for_each_chunk'
mm/pmalloc.c:485: undefined reference to `gen_pool_destroy'
vim +100 mm/pmalloc.c
13e2be64 Igor Stoppa 2018-02-04 61
13e2be64 Igor Stoppa 2018-02-04 62 static ssize_t pmalloc_pool_show_avail(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 63 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 64 char *buf)
13e2be64 Igor Stoppa 2018-02-04 65 {
13e2be64 Igor Stoppa 2018-02-04 66 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 67
13e2be64 Igor Stoppa 2018-02-04 68 data = container_of(attr, struct pmalloc_data, attr_avail);
13e2be64 Igor Stoppa 2018-02-04 69 return sprintf(buf, "%lu\n",
13e2be64 Igor Stoppa 2018-02-04 @70 (unsigned long)gen_pool_avail(data->pool));
13e2be64 Igor Stoppa 2018-02-04 71 }
13e2be64 Igor Stoppa 2018-02-04 72
13e2be64 Igor Stoppa 2018-02-04 73 static ssize_t pmalloc_pool_show_size(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 74 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 75 char *buf)
13e2be64 Igor Stoppa 2018-02-04 76 {
13e2be64 Igor Stoppa 2018-02-04 77 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 78
13e2be64 Igor Stoppa 2018-02-04 79 data = container_of(attr, struct pmalloc_data, attr_size);
13e2be64 Igor Stoppa 2018-02-04 80 return sprintf(buf, "%lu\n",
13e2be64 Igor Stoppa 2018-02-04 @81 (unsigned long)gen_pool_size(data->pool));
13e2be64 Igor Stoppa 2018-02-04 82 }
13e2be64 Igor Stoppa 2018-02-04 83
13e2be64 Igor Stoppa 2018-02-04 84 static void pool_chunk_number(struct gen_pool *pool,
13e2be64 Igor Stoppa 2018-02-04 85 struct gen_pool_chunk *chunk, void *data)
13e2be64 Igor Stoppa 2018-02-04 86 {
13e2be64 Igor Stoppa 2018-02-04 87 unsigned long *counter = data;
13e2be64 Igor Stoppa 2018-02-04 88
13e2be64 Igor Stoppa 2018-02-04 89 (*counter)++;
13e2be64 Igor Stoppa 2018-02-04 90 }
13e2be64 Igor Stoppa 2018-02-04 91
13e2be64 Igor Stoppa 2018-02-04 92 static ssize_t pmalloc_pool_show_chunks(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 93 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 94 char *buf)
13e2be64 Igor Stoppa 2018-02-04 95 {
13e2be64 Igor Stoppa 2018-02-04 96 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 97 unsigned long chunks_num = 0;
13e2be64 Igor Stoppa 2018-02-04 98
13e2be64 Igor Stoppa 2018-02-04 99 data = container_of(attr, struct pmalloc_data, attr_chunks);
13e2be64 Igor Stoppa 2018-02-04 @100 gen_pool_for_each_chunk(data->pool, pool_chunk_number, &chunks_num);
13e2be64 Igor Stoppa 2018-02-04 101 return sprintf(buf, "%lu\n", chunks_num);
13e2be64 Igor Stoppa 2018-02-04 102 }
13e2be64 Igor Stoppa 2018-02-04 103
13e2be64 Igor Stoppa 2018-02-04 104 /**
13e2be64 Igor Stoppa 2018-02-04 105 * Exposes the pool and its attributes through sysfs.
13e2be64 Igor Stoppa 2018-02-04 106 */
13e2be64 Igor Stoppa 2018-02-04 107 static struct kobject *pmalloc_connect(struct pmalloc_data *data)
13e2be64 Igor Stoppa 2018-02-04 108 {
13e2be64 Igor Stoppa 2018-02-04 109 const struct attribute *attrs[] = {
13e2be64 Igor Stoppa 2018-02-04 110 &data->attr_protected.attr,
13e2be64 Igor Stoppa 2018-02-04 111 &data->attr_avail.attr,
13e2be64 Igor Stoppa 2018-02-04 112 &data->attr_size.attr,
13e2be64 Igor Stoppa 2018-02-04 113 &data->attr_chunks.attr,
13e2be64 Igor Stoppa 2018-02-04 114 NULL
13e2be64 Igor Stoppa 2018-02-04 115 };
13e2be64 Igor Stoppa 2018-02-04 116 struct kobject *kobj;
13e2be64 Igor Stoppa 2018-02-04 117
13e2be64 Igor Stoppa 2018-02-04 118 kobj = kobject_create_and_add(data->pool->name, pmalloc_kobject);
13e2be64 Igor Stoppa 2018-02-04 119 if (unlikely(!kobj))
13e2be64 Igor Stoppa 2018-02-04 120 return NULL;
13e2be64 Igor Stoppa 2018-02-04 121
13e2be64 Igor Stoppa 2018-02-04 122 if (unlikely(sysfs_create_files(kobj, attrs) < 0)) {
13e2be64 Igor Stoppa 2018-02-04 123 kobject_put(kobj);
13e2be64 Igor Stoppa 2018-02-04 124 kobj = NULL;
13e2be64 Igor Stoppa 2018-02-04 125 }
13e2be64 Igor Stoppa 2018-02-04 126 return kobj;
13e2be64 Igor Stoppa 2018-02-04 127 }
13e2be64 Igor Stoppa 2018-02-04 128
13e2be64 Igor Stoppa 2018-02-04 129 /**
13e2be64 Igor Stoppa 2018-02-04 130 * Removes the pool and its attributes from sysfs.
13e2be64 Igor Stoppa 2018-02-04 131 */
13e2be64 Igor Stoppa 2018-02-04 132 static void pmalloc_disconnect(struct pmalloc_data *data,
13e2be64 Igor Stoppa 2018-02-04 133 struct kobject *kobj)
13e2be64 Igor Stoppa 2018-02-04 134 {
13e2be64 Igor Stoppa 2018-02-04 135 const struct attribute *attrs[] = {
13e2be64 Igor Stoppa 2018-02-04 136 &data->attr_protected.attr,
13e2be64 Igor Stoppa 2018-02-04 137 &data->attr_avail.attr,
13e2be64 Igor Stoppa 2018-02-04 138 &data->attr_size.attr,
13e2be64 Igor Stoppa 2018-02-04 139 &data->attr_chunks.attr,
13e2be64 Igor Stoppa 2018-02-04 140 NULL
13e2be64 Igor Stoppa 2018-02-04 141 };
13e2be64 Igor Stoppa 2018-02-04 142
13e2be64 Igor Stoppa 2018-02-04 143 sysfs_remove_files(kobj, attrs);
13e2be64 Igor Stoppa 2018-02-04 144 kobject_put(kobj);
13e2be64 Igor Stoppa 2018-02-04 145 }
13e2be64 Igor Stoppa 2018-02-04 146
13e2be64 Igor Stoppa 2018-02-04 147 /**
13e2be64 Igor Stoppa 2018-02-04 148 * Declares an attribute of the pool.
13e2be64 Igor Stoppa 2018-02-04 149 */
13e2be64 Igor Stoppa 2018-02-04 150
13e2be64 Igor Stoppa 2018-02-04 151 #define pmalloc_attr_init(data, attr_name) \
13e2be64 Igor Stoppa 2018-02-04 152 do { \
13e2be64 Igor Stoppa 2018-02-04 153 sysfs_attr_init(&data->attr_##attr_name.attr); \
13e2be64 Igor Stoppa 2018-02-04 154 data->attr_##attr_name.attr.name = #attr_name; \
13e2be64 Igor Stoppa 2018-02-04 155 data->attr_##attr_name.attr.mode = VERIFY_OCTAL_PERMISSIONS(0400); \
13e2be64 Igor Stoppa 2018-02-04 156 data->attr_##attr_name.show = pmalloc_pool_show_##attr_name; \
13e2be64 Igor Stoppa 2018-02-04 157 } while (0)
13e2be64 Igor Stoppa 2018-02-04 158
13e2be64 Igor Stoppa 2018-02-04 159 struct gen_pool *pmalloc_create_pool(const char *name, int min_alloc_order)
13e2be64 Igor Stoppa 2018-02-04 160 {
13e2be64 Igor Stoppa 2018-02-04 161 struct gen_pool *pool;
13e2be64 Igor Stoppa 2018-02-04 162 const char *pool_name;
13e2be64 Igor Stoppa 2018-02-04 163 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 164
13e2be64 Igor Stoppa 2018-02-04 165 if (!name) {
13e2be64 Igor Stoppa 2018-02-04 166 WARN_ON(1);
13e2be64 Igor Stoppa 2018-02-04 167 return NULL;
13e2be64 Igor Stoppa 2018-02-04 168 }
13e2be64 Igor Stoppa 2018-02-04 169
13e2be64 Igor Stoppa 2018-02-04 170 if (min_alloc_order < 0)
13e2be64 Igor Stoppa 2018-02-04 171 min_alloc_order = ilog2(sizeof(unsigned long));
13e2be64 Igor Stoppa 2018-02-04 172
13e2be64 Igor Stoppa 2018-02-04 @173 pool = gen_pool_create(min_alloc_order, NUMA_NO_NODE);
13e2be64 Igor Stoppa 2018-02-04 174 if (unlikely(!pool))
13e2be64 Igor Stoppa 2018-02-04 175 return NULL;
13e2be64 Igor Stoppa 2018-02-04 176
13e2be64 Igor Stoppa 2018-02-04 177 mutex_lock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 178 list_for_each_entry(data, pmalloc_list, node)
13e2be64 Igor Stoppa 2018-02-04 179 if (!strcmp(name, data->pool->name))
13e2be64 Igor Stoppa 2018-02-04 180 goto same_name_err;
13e2be64 Igor Stoppa 2018-02-04 181
13e2be64 Igor Stoppa 2018-02-04 182 pool_name = kstrdup(name, GFP_KERNEL);
13e2be64 Igor Stoppa 2018-02-04 183 if (unlikely(!pool_name))
13e2be64 Igor Stoppa 2018-02-04 184 goto name_alloc_err;
13e2be64 Igor Stoppa 2018-02-04 185
13e2be64 Igor Stoppa 2018-02-04 186 data = kzalloc(sizeof(struct pmalloc_data), GFP_KERNEL);
13e2be64 Igor Stoppa 2018-02-04 187 if (unlikely(!data))
13e2be64 Igor Stoppa 2018-02-04 188 goto data_alloc_err;
13e2be64 Igor Stoppa 2018-02-04 189
13e2be64 Igor Stoppa 2018-02-04 190 data->protected = false;
13e2be64 Igor Stoppa 2018-02-04 191 data->pool = pool;
13e2be64 Igor Stoppa 2018-02-04 192 pmalloc_attr_init(data, protected);
13e2be64 Igor Stoppa 2018-02-04 193 pmalloc_attr_init(data, avail);
13e2be64 Igor Stoppa 2018-02-04 194 pmalloc_attr_init(data, size);
13e2be64 Igor Stoppa 2018-02-04 195 pmalloc_attr_init(data, chunks);
13e2be64 Igor Stoppa 2018-02-04 196 pool->data = data;
13e2be64 Igor Stoppa 2018-02-04 197 pool->name = pool_name;
13e2be64 Igor Stoppa 2018-02-04 198
13e2be64 Igor Stoppa 2018-02-04 199 list_add(&data->node, pmalloc_list);
13e2be64 Igor Stoppa 2018-02-04 200 if (pmalloc_list == &pmalloc_final_list)
13e2be64 Igor Stoppa 2018-02-04 201 data->pool_kobject = pmalloc_connect(data);
13e2be64 Igor Stoppa 2018-02-04 202 mutex_unlock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 203 return pool;
13e2be64 Igor Stoppa 2018-02-04 204
13e2be64 Igor Stoppa 2018-02-04 205 data_alloc_err:
13e2be64 Igor Stoppa 2018-02-04 206 kfree(pool_name);
13e2be64 Igor Stoppa 2018-02-04 207 name_alloc_err:
13e2be64 Igor Stoppa 2018-02-04 208 same_name_err:
13e2be64 Igor Stoppa 2018-02-04 209 mutex_unlock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 @210 gen_pool_destroy(pool);
13e2be64 Igor Stoppa 2018-02-04 211 return NULL;
13e2be64 Igor Stoppa 2018-02-04 212 }
13e2be64 Igor Stoppa 2018-02-04 213
:::::: The code at line 100 was first introduced by commit
:::::: 13e2be64b34fce3c12159af55855eef7a8b4a54f Protectable Memory
:::::: TO: Igor Stoppa <igor.stoppa@huawei.com>
:::::: CC: 0day robot <fengguang.wu@intel.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32396 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: lkp@intel.com (kbuild test robot)
To: linux-security-module@vger.kernel.org
Subject: [PATCH 5/6] Pmalloc: self-test
Date: Thu, 8 Feb 2018 01:18:26 +0800 [thread overview]
Message-ID: <201802080158.oKwP7HVR%fengguang.wu@intel.com> (raw)
In-Reply-To: <20180204170056.28772-1-igor.stoppa@huawei.com>
Hi Igor,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on kees/for-next/pstore]
[also build test ERROR on v4.15]
[cannot apply to linus/master mmotm/master next-20180207]
[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/20180207-171252
base: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
config: i386-randconfig-s1-201805+bisect_validate (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
mm/pmalloc.o: In function `pmalloc_pool_show_chunks':
>> mm/pmalloc.c:100: undefined reference to `gen_pool_for_each_chunk'
mm/pmalloc.o: In function `pmalloc_pool_show_size':
>> mm/pmalloc.c:81: undefined reference to `gen_pool_size'
mm/pmalloc.o: In function `pmalloc_pool_show_avail':
>> mm/pmalloc.c:70: undefined reference to `gen_pool_avail'
mm/pmalloc.o: In function `pmalloc_chunk_free':
>> mm/pmalloc.c:459: undefined reference to `gen_pool_flush_chunk'
mm/pmalloc.o: In function `pmalloc_create_pool':
>> mm/pmalloc.c:173: undefined reference to `gen_pool_create'
>> mm/pmalloc.c:210: undefined reference to `gen_pool_destroy'
mm/pmalloc.o: In function `gen_pool_add':
>> include/linux/genalloc.h:115: undefined reference to `gen_pool_add_virt'
mm/pmalloc.o: In function `pmalloc':
>> mm/pmalloc.c:357: undefined reference to `gen_pool_alloc'
mm/pmalloc.o: In function `gen_pool_add':
>> include/linux/genalloc.h:115: undefined reference to `gen_pool_add_virt'
mm/pmalloc.o: In function `pmalloc':
mm/pmalloc.c:386: undefined reference to `gen_pool_alloc'
mm/pmalloc.o: In function `pmalloc_destroy_pool':
mm/pmalloc.c:484: undefined reference to `gen_pool_for_each_chunk'
mm/pmalloc.c:485: undefined reference to `gen_pool_destroy'
vim +100 mm/pmalloc.c
13e2be64 Igor Stoppa 2018-02-04 61
13e2be64 Igor Stoppa 2018-02-04 62 static ssize_t pmalloc_pool_show_avail(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 63 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 64 char *buf)
13e2be64 Igor Stoppa 2018-02-04 65 {
13e2be64 Igor Stoppa 2018-02-04 66 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 67
13e2be64 Igor Stoppa 2018-02-04 68 data = container_of(attr, struct pmalloc_data, attr_avail);
13e2be64 Igor Stoppa 2018-02-04 69 return sprintf(buf, "%lu\n",
13e2be64 Igor Stoppa 2018-02-04 @70 (unsigned long)gen_pool_avail(data->pool));
13e2be64 Igor Stoppa 2018-02-04 71 }
13e2be64 Igor Stoppa 2018-02-04 72
13e2be64 Igor Stoppa 2018-02-04 73 static ssize_t pmalloc_pool_show_size(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 74 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 75 char *buf)
13e2be64 Igor Stoppa 2018-02-04 76 {
13e2be64 Igor Stoppa 2018-02-04 77 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 78
13e2be64 Igor Stoppa 2018-02-04 79 data = container_of(attr, struct pmalloc_data, attr_size);
13e2be64 Igor Stoppa 2018-02-04 80 return sprintf(buf, "%lu\n",
13e2be64 Igor Stoppa 2018-02-04 @81 (unsigned long)gen_pool_size(data->pool));
13e2be64 Igor Stoppa 2018-02-04 82 }
13e2be64 Igor Stoppa 2018-02-04 83
13e2be64 Igor Stoppa 2018-02-04 84 static void pool_chunk_number(struct gen_pool *pool,
13e2be64 Igor Stoppa 2018-02-04 85 struct gen_pool_chunk *chunk, void *data)
13e2be64 Igor Stoppa 2018-02-04 86 {
13e2be64 Igor Stoppa 2018-02-04 87 unsigned long *counter = data;
13e2be64 Igor Stoppa 2018-02-04 88
13e2be64 Igor Stoppa 2018-02-04 89 (*counter)++;
13e2be64 Igor Stoppa 2018-02-04 90 }
13e2be64 Igor Stoppa 2018-02-04 91
13e2be64 Igor Stoppa 2018-02-04 92 static ssize_t pmalloc_pool_show_chunks(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 93 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 94 char *buf)
13e2be64 Igor Stoppa 2018-02-04 95 {
13e2be64 Igor Stoppa 2018-02-04 96 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 97 unsigned long chunks_num = 0;
13e2be64 Igor Stoppa 2018-02-04 98
13e2be64 Igor Stoppa 2018-02-04 99 data = container_of(attr, struct pmalloc_data, attr_chunks);
13e2be64 Igor Stoppa 2018-02-04 @100 gen_pool_for_each_chunk(data->pool, pool_chunk_number, &chunks_num);
13e2be64 Igor Stoppa 2018-02-04 101 return sprintf(buf, "%lu\n", chunks_num);
13e2be64 Igor Stoppa 2018-02-04 102 }
13e2be64 Igor Stoppa 2018-02-04 103
13e2be64 Igor Stoppa 2018-02-04 104 /**
13e2be64 Igor Stoppa 2018-02-04 105 * Exposes the pool and its attributes through sysfs.
13e2be64 Igor Stoppa 2018-02-04 106 */
13e2be64 Igor Stoppa 2018-02-04 107 static struct kobject *pmalloc_connect(struct pmalloc_data *data)
13e2be64 Igor Stoppa 2018-02-04 108 {
13e2be64 Igor Stoppa 2018-02-04 109 const struct attribute *attrs[] = {
13e2be64 Igor Stoppa 2018-02-04 110 &data->attr_protected.attr,
13e2be64 Igor Stoppa 2018-02-04 111 &data->attr_avail.attr,
13e2be64 Igor Stoppa 2018-02-04 112 &data->attr_size.attr,
13e2be64 Igor Stoppa 2018-02-04 113 &data->attr_chunks.attr,
13e2be64 Igor Stoppa 2018-02-04 114 NULL
13e2be64 Igor Stoppa 2018-02-04 115 };
13e2be64 Igor Stoppa 2018-02-04 116 struct kobject *kobj;
13e2be64 Igor Stoppa 2018-02-04 117
13e2be64 Igor Stoppa 2018-02-04 118 kobj = kobject_create_and_add(data->pool->name, pmalloc_kobject);
13e2be64 Igor Stoppa 2018-02-04 119 if (unlikely(!kobj))
13e2be64 Igor Stoppa 2018-02-04 120 return NULL;
13e2be64 Igor Stoppa 2018-02-04 121
13e2be64 Igor Stoppa 2018-02-04 122 if (unlikely(sysfs_create_files(kobj, attrs) < 0)) {
13e2be64 Igor Stoppa 2018-02-04 123 kobject_put(kobj);
13e2be64 Igor Stoppa 2018-02-04 124 kobj = NULL;
13e2be64 Igor Stoppa 2018-02-04 125 }
13e2be64 Igor Stoppa 2018-02-04 126 return kobj;
13e2be64 Igor Stoppa 2018-02-04 127 }
13e2be64 Igor Stoppa 2018-02-04 128
13e2be64 Igor Stoppa 2018-02-04 129 /**
13e2be64 Igor Stoppa 2018-02-04 130 * Removes the pool and its attributes from sysfs.
13e2be64 Igor Stoppa 2018-02-04 131 */
13e2be64 Igor Stoppa 2018-02-04 132 static void pmalloc_disconnect(struct pmalloc_data *data,
13e2be64 Igor Stoppa 2018-02-04 133 struct kobject *kobj)
13e2be64 Igor Stoppa 2018-02-04 134 {
13e2be64 Igor Stoppa 2018-02-04 135 const struct attribute *attrs[] = {
13e2be64 Igor Stoppa 2018-02-04 136 &data->attr_protected.attr,
13e2be64 Igor Stoppa 2018-02-04 137 &data->attr_avail.attr,
13e2be64 Igor Stoppa 2018-02-04 138 &data->attr_size.attr,
13e2be64 Igor Stoppa 2018-02-04 139 &data->attr_chunks.attr,
13e2be64 Igor Stoppa 2018-02-04 140 NULL
13e2be64 Igor Stoppa 2018-02-04 141 };
13e2be64 Igor Stoppa 2018-02-04 142
13e2be64 Igor Stoppa 2018-02-04 143 sysfs_remove_files(kobj, attrs);
13e2be64 Igor Stoppa 2018-02-04 144 kobject_put(kobj);
13e2be64 Igor Stoppa 2018-02-04 145 }
13e2be64 Igor Stoppa 2018-02-04 146
13e2be64 Igor Stoppa 2018-02-04 147 /**
13e2be64 Igor Stoppa 2018-02-04 148 * Declares an attribute of the pool.
13e2be64 Igor Stoppa 2018-02-04 149 */
13e2be64 Igor Stoppa 2018-02-04 150
13e2be64 Igor Stoppa 2018-02-04 151 #define pmalloc_attr_init(data, attr_name) \
13e2be64 Igor Stoppa 2018-02-04 152 do { \
13e2be64 Igor Stoppa 2018-02-04 153 sysfs_attr_init(&data->attr_##attr_name.attr); \
13e2be64 Igor Stoppa 2018-02-04 154 data->attr_##attr_name.attr.name = #attr_name; \
13e2be64 Igor Stoppa 2018-02-04 155 data->attr_##attr_name.attr.mode = VERIFY_OCTAL_PERMISSIONS(0400); \
13e2be64 Igor Stoppa 2018-02-04 156 data->attr_##attr_name.show = pmalloc_pool_show_##attr_name; \
13e2be64 Igor Stoppa 2018-02-04 157 } while (0)
13e2be64 Igor Stoppa 2018-02-04 158
13e2be64 Igor Stoppa 2018-02-04 159 struct gen_pool *pmalloc_create_pool(const char *name, int min_alloc_order)
13e2be64 Igor Stoppa 2018-02-04 160 {
13e2be64 Igor Stoppa 2018-02-04 161 struct gen_pool *pool;
13e2be64 Igor Stoppa 2018-02-04 162 const char *pool_name;
13e2be64 Igor Stoppa 2018-02-04 163 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 164
13e2be64 Igor Stoppa 2018-02-04 165 if (!name) {
13e2be64 Igor Stoppa 2018-02-04 166 WARN_ON(1);
13e2be64 Igor Stoppa 2018-02-04 167 return NULL;
13e2be64 Igor Stoppa 2018-02-04 168 }
13e2be64 Igor Stoppa 2018-02-04 169
13e2be64 Igor Stoppa 2018-02-04 170 if (min_alloc_order < 0)
13e2be64 Igor Stoppa 2018-02-04 171 min_alloc_order = ilog2(sizeof(unsigned long));
13e2be64 Igor Stoppa 2018-02-04 172
13e2be64 Igor Stoppa 2018-02-04 @173 pool = gen_pool_create(min_alloc_order, NUMA_NO_NODE);
13e2be64 Igor Stoppa 2018-02-04 174 if (unlikely(!pool))
13e2be64 Igor Stoppa 2018-02-04 175 return NULL;
13e2be64 Igor Stoppa 2018-02-04 176
13e2be64 Igor Stoppa 2018-02-04 177 mutex_lock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 178 list_for_each_entry(data, pmalloc_list, node)
13e2be64 Igor Stoppa 2018-02-04 179 if (!strcmp(name, data->pool->name))
13e2be64 Igor Stoppa 2018-02-04 180 goto same_name_err;
13e2be64 Igor Stoppa 2018-02-04 181
13e2be64 Igor Stoppa 2018-02-04 182 pool_name = kstrdup(name, GFP_KERNEL);
13e2be64 Igor Stoppa 2018-02-04 183 if (unlikely(!pool_name))
13e2be64 Igor Stoppa 2018-02-04 184 goto name_alloc_err;
13e2be64 Igor Stoppa 2018-02-04 185
13e2be64 Igor Stoppa 2018-02-04 186 data = kzalloc(sizeof(struct pmalloc_data), GFP_KERNEL);
13e2be64 Igor Stoppa 2018-02-04 187 if (unlikely(!data))
13e2be64 Igor Stoppa 2018-02-04 188 goto data_alloc_err;
13e2be64 Igor Stoppa 2018-02-04 189
13e2be64 Igor Stoppa 2018-02-04 190 data->protected = false;
13e2be64 Igor Stoppa 2018-02-04 191 data->pool = pool;
13e2be64 Igor Stoppa 2018-02-04 192 pmalloc_attr_init(data, protected);
13e2be64 Igor Stoppa 2018-02-04 193 pmalloc_attr_init(data, avail);
13e2be64 Igor Stoppa 2018-02-04 194 pmalloc_attr_init(data, size);
13e2be64 Igor Stoppa 2018-02-04 195 pmalloc_attr_init(data, chunks);
13e2be64 Igor Stoppa 2018-02-04 196 pool->data = data;
13e2be64 Igor Stoppa 2018-02-04 197 pool->name = pool_name;
13e2be64 Igor Stoppa 2018-02-04 198
13e2be64 Igor Stoppa 2018-02-04 199 list_add(&data->node, pmalloc_list);
13e2be64 Igor Stoppa 2018-02-04 200 if (pmalloc_list == &pmalloc_final_list)
13e2be64 Igor Stoppa 2018-02-04 201 data->pool_kobject = pmalloc_connect(data);
13e2be64 Igor Stoppa 2018-02-04 202 mutex_unlock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 203 return pool;
13e2be64 Igor Stoppa 2018-02-04 204
13e2be64 Igor Stoppa 2018-02-04 205 data_alloc_err:
13e2be64 Igor Stoppa 2018-02-04 206 kfree(pool_name);
13e2be64 Igor Stoppa 2018-02-04 207 name_alloc_err:
13e2be64 Igor Stoppa 2018-02-04 208 same_name_err:
13e2be64 Igor Stoppa 2018-02-04 209 mutex_unlock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 @210 gen_pool_destroy(pool);
13e2be64 Igor Stoppa 2018-02-04 211 return NULL;
13e2be64 Igor Stoppa 2018-02-04 212 }
13e2be64 Igor Stoppa 2018-02-04 213
:::::: The code at line 100 was first introduced by commit
:::::: 13e2be64b34fce3c12159af55855eef7a8b4a54f Protectable Memory
:::::: TO: Igor Stoppa <igor.stoppa@huawei.com>
:::::: CC: 0day robot <fengguang.wu@intel.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Igor Stoppa <igor.stoppa@huawei.com>
Cc: kbuild-all@01.org, jglisse@redhat.com, keescook@chromium.org,
mhocko@kernel.org, labbott@redhat.com, hch@infradead.org,
willy@infradead.org, cl@linux.com,
linux-security-module@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
kernel-hardening@lists.openwall.com
Subject: Re: [PATCH 5/6] Pmalloc: self-test
Date: Thu, 8 Feb 2018 01:18:26 +0800 [thread overview]
Message-ID: <201802080158.oKwP7HVR%fengguang.wu@intel.com> (raw)
In-Reply-To: <20180204170056.28772-1-igor.stoppa@huawei.com>
[-- Attachment #1: Type: text/plain, Size: 11849 bytes --]
Hi Igor,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on kees/for-next/pstore]
[also build test ERROR on v4.15]
[cannot apply to linus/master mmotm/master next-20180207]
[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/20180207-171252
base: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore
config: i386-randconfig-s1-201805+bisect_validate (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
mm/pmalloc.o: In function `pmalloc_pool_show_chunks':
>> mm/pmalloc.c:100: undefined reference to `gen_pool_for_each_chunk'
mm/pmalloc.o: In function `pmalloc_pool_show_size':
>> mm/pmalloc.c:81: undefined reference to `gen_pool_size'
mm/pmalloc.o: In function `pmalloc_pool_show_avail':
>> mm/pmalloc.c:70: undefined reference to `gen_pool_avail'
mm/pmalloc.o: In function `pmalloc_chunk_free':
>> mm/pmalloc.c:459: undefined reference to `gen_pool_flush_chunk'
mm/pmalloc.o: In function `pmalloc_create_pool':
>> mm/pmalloc.c:173: undefined reference to `gen_pool_create'
>> mm/pmalloc.c:210: undefined reference to `gen_pool_destroy'
mm/pmalloc.o: In function `gen_pool_add':
>> include/linux/genalloc.h:115: undefined reference to `gen_pool_add_virt'
mm/pmalloc.o: In function `pmalloc':
>> mm/pmalloc.c:357: undefined reference to `gen_pool_alloc'
mm/pmalloc.o: In function `gen_pool_add':
>> include/linux/genalloc.h:115: undefined reference to `gen_pool_add_virt'
mm/pmalloc.o: In function `pmalloc':
mm/pmalloc.c:386: undefined reference to `gen_pool_alloc'
mm/pmalloc.o: In function `pmalloc_destroy_pool':
mm/pmalloc.c:484: undefined reference to `gen_pool_for_each_chunk'
mm/pmalloc.c:485: undefined reference to `gen_pool_destroy'
vim +100 mm/pmalloc.c
13e2be64 Igor Stoppa 2018-02-04 61
13e2be64 Igor Stoppa 2018-02-04 62 static ssize_t pmalloc_pool_show_avail(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 63 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 64 char *buf)
13e2be64 Igor Stoppa 2018-02-04 65 {
13e2be64 Igor Stoppa 2018-02-04 66 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 67
13e2be64 Igor Stoppa 2018-02-04 68 data = container_of(attr, struct pmalloc_data, attr_avail);
13e2be64 Igor Stoppa 2018-02-04 69 return sprintf(buf, "%lu\n",
13e2be64 Igor Stoppa 2018-02-04 @70 (unsigned long)gen_pool_avail(data->pool));
13e2be64 Igor Stoppa 2018-02-04 71 }
13e2be64 Igor Stoppa 2018-02-04 72
13e2be64 Igor Stoppa 2018-02-04 73 static ssize_t pmalloc_pool_show_size(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 74 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 75 char *buf)
13e2be64 Igor Stoppa 2018-02-04 76 {
13e2be64 Igor Stoppa 2018-02-04 77 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 78
13e2be64 Igor Stoppa 2018-02-04 79 data = container_of(attr, struct pmalloc_data, attr_size);
13e2be64 Igor Stoppa 2018-02-04 80 return sprintf(buf, "%lu\n",
13e2be64 Igor Stoppa 2018-02-04 @81 (unsigned long)gen_pool_size(data->pool));
13e2be64 Igor Stoppa 2018-02-04 82 }
13e2be64 Igor Stoppa 2018-02-04 83
13e2be64 Igor Stoppa 2018-02-04 84 static void pool_chunk_number(struct gen_pool *pool,
13e2be64 Igor Stoppa 2018-02-04 85 struct gen_pool_chunk *chunk, void *data)
13e2be64 Igor Stoppa 2018-02-04 86 {
13e2be64 Igor Stoppa 2018-02-04 87 unsigned long *counter = data;
13e2be64 Igor Stoppa 2018-02-04 88
13e2be64 Igor Stoppa 2018-02-04 89 (*counter)++;
13e2be64 Igor Stoppa 2018-02-04 90 }
13e2be64 Igor Stoppa 2018-02-04 91
13e2be64 Igor Stoppa 2018-02-04 92 static ssize_t pmalloc_pool_show_chunks(struct kobject *dev,
13e2be64 Igor Stoppa 2018-02-04 93 struct kobj_attribute *attr,
13e2be64 Igor Stoppa 2018-02-04 94 char *buf)
13e2be64 Igor Stoppa 2018-02-04 95 {
13e2be64 Igor Stoppa 2018-02-04 96 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 97 unsigned long chunks_num = 0;
13e2be64 Igor Stoppa 2018-02-04 98
13e2be64 Igor Stoppa 2018-02-04 99 data = container_of(attr, struct pmalloc_data, attr_chunks);
13e2be64 Igor Stoppa 2018-02-04 @100 gen_pool_for_each_chunk(data->pool, pool_chunk_number, &chunks_num);
13e2be64 Igor Stoppa 2018-02-04 101 return sprintf(buf, "%lu\n", chunks_num);
13e2be64 Igor Stoppa 2018-02-04 102 }
13e2be64 Igor Stoppa 2018-02-04 103
13e2be64 Igor Stoppa 2018-02-04 104 /**
13e2be64 Igor Stoppa 2018-02-04 105 * Exposes the pool and its attributes through sysfs.
13e2be64 Igor Stoppa 2018-02-04 106 */
13e2be64 Igor Stoppa 2018-02-04 107 static struct kobject *pmalloc_connect(struct pmalloc_data *data)
13e2be64 Igor Stoppa 2018-02-04 108 {
13e2be64 Igor Stoppa 2018-02-04 109 const struct attribute *attrs[] = {
13e2be64 Igor Stoppa 2018-02-04 110 &data->attr_protected.attr,
13e2be64 Igor Stoppa 2018-02-04 111 &data->attr_avail.attr,
13e2be64 Igor Stoppa 2018-02-04 112 &data->attr_size.attr,
13e2be64 Igor Stoppa 2018-02-04 113 &data->attr_chunks.attr,
13e2be64 Igor Stoppa 2018-02-04 114 NULL
13e2be64 Igor Stoppa 2018-02-04 115 };
13e2be64 Igor Stoppa 2018-02-04 116 struct kobject *kobj;
13e2be64 Igor Stoppa 2018-02-04 117
13e2be64 Igor Stoppa 2018-02-04 118 kobj = kobject_create_and_add(data->pool->name, pmalloc_kobject);
13e2be64 Igor Stoppa 2018-02-04 119 if (unlikely(!kobj))
13e2be64 Igor Stoppa 2018-02-04 120 return NULL;
13e2be64 Igor Stoppa 2018-02-04 121
13e2be64 Igor Stoppa 2018-02-04 122 if (unlikely(sysfs_create_files(kobj, attrs) < 0)) {
13e2be64 Igor Stoppa 2018-02-04 123 kobject_put(kobj);
13e2be64 Igor Stoppa 2018-02-04 124 kobj = NULL;
13e2be64 Igor Stoppa 2018-02-04 125 }
13e2be64 Igor Stoppa 2018-02-04 126 return kobj;
13e2be64 Igor Stoppa 2018-02-04 127 }
13e2be64 Igor Stoppa 2018-02-04 128
13e2be64 Igor Stoppa 2018-02-04 129 /**
13e2be64 Igor Stoppa 2018-02-04 130 * Removes the pool and its attributes from sysfs.
13e2be64 Igor Stoppa 2018-02-04 131 */
13e2be64 Igor Stoppa 2018-02-04 132 static void pmalloc_disconnect(struct pmalloc_data *data,
13e2be64 Igor Stoppa 2018-02-04 133 struct kobject *kobj)
13e2be64 Igor Stoppa 2018-02-04 134 {
13e2be64 Igor Stoppa 2018-02-04 135 const struct attribute *attrs[] = {
13e2be64 Igor Stoppa 2018-02-04 136 &data->attr_protected.attr,
13e2be64 Igor Stoppa 2018-02-04 137 &data->attr_avail.attr,
13e2be64 Igor Stoppa 2018-02-04 138 &data->attr_size.attr,
13e2be64 Igor Stoppa 2018-02-04 139 &data->attr_chunks.attr,
13e2be64 Igor Stoppa 2018-02-04 140 NULL
13e2be64 Igor Stoppa 2018-02-04 141 };
13e2be64 Igor Stoppa 2018-02-04 142
13e2be64 Igor Stoppa 2018-02-04 143 sysfs_remove_files(kobj, attrs);
13e2be64 Igor Stoppa 2018-02-04 144 kobject_put(kobj);
13e2be64 Igor Stoppa 2018-02-04 145 }
13e2be64 Igor Stoppa 2018-02-04 146
13e2be64 Igor Stoppa 2018-02-04 147 /**
13e2be64 Igor Stoppa 2018-02-04 148 * Declares an attribute of the pool.
13e2be64 Igor Stoppa 2018-02-04 149 */
13e2be64 Igor Stoppa 2018-02-04 150
13e2be64 Igor Stoppa 2018-02-04 151 #define pmalloc_attr_init(data, attr_name) \
13e2be64 Igor Stoppa 2018-02-04 152 do { \
13e2be64 Igor Stoppa 2018-02-04 153 sysfs_attr_init(&data->attr_##attr_name.attr); \
13e2be64 Igor Stoppa 2018-02-04 154 data->attr_##attr_name.attr.name = #attr_name; \
13e2be64 Igor Stoppa 2018-02-04 155 data->attr_##attr_name.attr.mode = VERIFY_OCTAL_PERMISSIONS(0400); \
13e2be64 Igor Stoppa 2018-02-04 156 data->attr_##attr_name.show = pmalloc_pool_show_##attr_name; \
13e2be64 Igor Stoppa 2018-02-04 157 } while (0)
13e2be64 Igor Stoppa 2018-02-04 158
13e2be64 Igor Stoppa 2018-02-04 159 struct gen_pool *pmalloc_create_pool(const char *name, int min_alloc_order)
13e2be64 Igor Stoppa 2018-02-04 160 {
13e2be64 Igor Stoppa 2018-02-04 161 struct gen_pool *pool;
13e2be64 Igor Stoppa 2018-02-04 162 const char *pool_name;
13e2be64 Igor Stoppa 2018-02-04 163 struct pmalloc_data *data;
13e2be64 Igor Stoppa 2018-02-04 164
13e2be64 Igor Stoppa 2018-02-04 165 if (!name) {
13e2be64 Igor Stoppa 2018-02-04 166 WARN_ON(1);
13e2be64 Igor Stoppa 2018-02-04 167 return NULL;
13e2be64 Igor Stoppa 2018-02-04 168 }
13e2be64 Igor Stoppa 2018-02-04 169
13e2be64 Igor Stoppa 2018-02-04 170 if (min_alloc_order < 0)
13e2be64 Igor Stoppa 2018-02-04 171 min_alloc_order = ilog2(sizeof(unsigned long));
13e2be64 Igor Stoppa 2018-02-04 172
13e2be64 Igor Stoppa 2018-02-04 @173 pool = gen_pool_create(min_alloc_order, NUMA_NO_NODE);
13e2be64 Igor Stoppa 2018-02-04 174 if (unlikely(!pool))
13e2be64 Igor Stoppa 2018-02-04 175 return NULL;
13e2be64 Igor Stoppa 2018-02-04 176
13e2be64 Igor Stoppa 2018-02-04 177 mutex_lock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 178 list_for_each_entry(data, pmalloc_list, node)
13e2be64 Igor Stoppa 2018-02-04 179 if (!strcmp(name, data->pool->name))
13e2be64 Igor Stoppa 2018-02-04 180 goto same_name_err;
13e2be64 Igor Stoppa 2018-02-04 181
13e2be64 Igor Stoppa 2018-02-04 182 pool_name = kstrdup(name, GFP_KERNEL);
13e2be64 Igor Stoppa 2018-02-04 183 if (unlikely(!pool_name))
13e2be64 Igor Stoppa 2018-02-04 184 goto name_alloc_err;
13e2be64 Igor Stoppa 2018-02-04 185
13e2be64 Igor Stoppa 2018-02-04 186 data = kzalloc(sizeof(struct pmalloc_data), GFP_KERNEL);
13e2be64 Igor Stoppa 2018-02-04 187 if (unlikely(!data))
13e2be64 Igor Stoppa 2018-02-04 188 goto data_alloc_err;
13e2be64 Igor Stoppa 2018-02-04 189
13e2be64 Igor Stoppa 2018-02-04 190 data->protected = false;
13e2be64 Igor Stoppa 2018-02-04 191 data->pool = pool;
13e2be64 Igor Stoppa 2018-02-04 192 pmalloc_attr_init(data, protected);
13e2be64 Igor Stoppa 2018-02-04 193 pmalloc_attr_init(data, avail);
13e2be64 Igor Stoppa 2018-02-04 194 pmalloc_attr_init(data, size);
13e2be64 Igor Stoppa 2018-02-04 195 pmalloc_attr_init(data, chunks);
13e2be64 Igor Stoppa 2018-02-04 196 pool->data = data;
13e2be64 Igor Stoppa 2018-02-04 197 pool->name = pool_name;
13e2be64 Igor Stoppa 2018-02-04 198
13e2be64 Igor Stoppa 2018-02-04 199 list_add(&data->node, pmalloc_list);
13e2be64 Igor Stoppa 2018-02-04 200 if (pmalloc_list == &pmalloc_final_list)
13e2be64 Igor Stoppa 2018-02-04 201 data->pool_kobject = pmalloc_connect(data);
13e2be64 Igor Stoppa 2018-02-04 202 mutex_unlock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 203 return pool;
13e2be64 Igor Stoppa 2018-02-04 204
13e2be64 Igor Stoppa 2018-02-04 205 data_alloc_err:
13e2be64 Igor Stoppa 2018-02-04 206 kfree(pool_name);
13e2be64 Igor Stoppa 2018-02-04 207 name_alloc_err:
13e2be64 Igor Stoppa 2018-02-04 208 same_name_err:
13e2be64 Igor Stoppa 2018-02-04 209 mutex_unlock(&pmalloc_mutex);
13e2be64 Igor Stoppa 2018-02-04 @210 gen_pool_destroy(pool);
13e2be64 Igor Stoppa 2018-02-04 211 return NULL;
13e2be64 Igor Stoppa 2018-02-04 212 }
13e2be64 Igor Stoppa 2018-02-04 213
:::::: The code at line 100 was first introduced by commit
:::::: 13e2be64b34fce3c12159af55855eef7a8b4a54f Protectable Memory
:::::: TO: Igor Stoppa <igor.stoppa@huawei.com>
:::::: CC: 0day robot <fengguang.wu@intel.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32396 bytes --]
next prev parent reply other threads:[~2018-02-07 17:18 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-04 16:47 [RFC PATCH v14 0/6] mm: security: ro protection for dynamic data Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` [PATCH 1/6] genalloc: track beginning of allocations Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 22:34 ` Randy Dunlap
2018-02-04 22:34 ` Randy Dunlap
2018-02-04 22:34 ` Randy Dunlap
2018-02-05 3:45 ` Matthew Wilcox
2018-02-05 3:45 ` Matthew Wilcox
2018-02-05 3:45 ` Matthew Wilcox
2018-02-09 14:28 ` Igor Stoppa
2018-02-09 14:28 ` Igor Stoppa
2018-02-09 14:28 ` Igor Stoppa
2018-02-09 14:28 ` Igor Stoppa
2018-02-09 16:18 ` Igor Stoppa
2018-02-09 16:18 ` Igor Stoppa
2018-02-09 16:18 ` Igor Stoppa
2018-02-09 16:18 ` Igor Stoppa
2018-02-09 17:15 ` Randy Dunlap
2018-02-09 17:15 ` Randy Dunlap
2018-02-09 17:15 ` Randy Dunlap
2018-02-04 16:47 ` [PATCH 2/6] genalloc: selftest Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 22:19 ` Randy Dunlap
2018-02-04 22:19 ` Randy Dunlap
2018-02-04 22:19 ` Randy Dunlap
2018-02-04 23:03 ` Matthew Wilcox
2018-02-04 23:03 ` Matthew Wilcox
2018-02-04 23:03 ` Matthew Wilcox
2018-02-05 0:14 ` Randy Dunlap
2018-02-05 0:14 ` Randy Dunlap
2018-02-05 0:14 ` Randy Dunlap
2018-02-09 14:30 ` Igor Stoppa
2018-02-09 14:30 ` Igor Stoppa
2018-02-09 14:30 ` Igor Stoppa
2018-02-09 14:30 ` Igor Stoppa
2018-02-10 22:59 ` Igor Stoppa
2018-02-10 22:59 ` Igor Stoppa
2018-02-10 22:59 ` Igor Stoppa
2018-02-10 22:59 ` Igor Stoppa
2018-02-07 20:25 ` kbuild test robot
2018-02-07 20:25 ` kbuild test robot
2018-02-07 20:25 ` kbuild test robot
2018-02-11 2:01 ` Igor Stoppa
2018-02-11 2:01 ` Igor Stoppa
2018-02-11 2:01 ` Igor Stoppa
2018-02-11 2:01 ` Igor Stoppa
2018-02-04 16:47 ` [PATCH 3/6] struct page: add field for vm_struct Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` [PATCH 4/6] Protectable Memory Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 16:47 ` Igor Stoppa
2018-02-04 22:06 ` Randy Dunlap
2018-02-04 22:06 ` Randy Dunlap
2018-02-04 22:06 ` Randy Dunlap
2018-02-11 1:04 ` Igor Stoppa
2018-02-11 1:04 ` Igor Stoppa
2018-02-11 1:04 ` Igor Stoppa
2018-02-11 1:04 ` Igor Stoppa
2018-02-07 10:03 ` kbuild test robot
2018-02-07 10:03 ` kbuild test robot
2018-02-07 10:03 ` kbuild test robot
2018-02-07 22:21 ` kbuild test robot
2018-02-07 22:21 ` kbuild test robot
2018-02-07 22:21 ` kbuild test robot
2018-02-04 17:00 ` [PATCH 5/6] Pmalloc: self-test Igor Stoppa
2018-02-04 17:00 ` Igor Stoppa
2018-02-04 17:00 ` Igor Stoppa
2018-02-04 17:00 ` Igor Stoppa
2018-02-04 17:00 ` [PATCH 6/6] Documentation for Pmalloc Igor Stoppa
2018-02-04 17:00 ` Igor Stoppa
2018-02-04 17:00 ` Igor Stoppa
2018-02-04 17:00 ` Igor Stoppa
2018-02-04 21:37 ` Randy Dunlap
2018-02-04 21:37 ` Randy Dunlap
2018-02-04 21:37 ` Randy Dunlap
2018-02-09 16:41 ` Igor Stoppa
2018-02-09 16:41 ` Igor Stoppa
2018-02-09 16:41 ` Igor Stoppa
2018-02-09 16:41 ` Igor Stoppa
2018-02-07 17:18 ` kbuild test robot [this message]
2018-02-07 17:18 ` [PATCH 5/6] Pmalloc: self-test kbuild test robot
2018-02-07 17:18 ` kbuild test robot
2018-02-11 1:28 ` Igor Stoppa
2018-02-11 1:28 ` Igor Stoppa
2018-02-11 1:28 ` Igor Stoppa
2018-02-11 1:28 ` Igor Stoppa
2018-02-11 3:19 [RFC PATCH v15 0/6] mm: security: ro protection for dynamic data Igor Stoppa
2018-02-11 3:19 ` [PATCH 5/6] Pmalloc: self-test Igor Stoppa
2018-02-11 3:19 ` Igor Stoppa
2018-02-11 3:19 ` Igor Stoppa
2018-02-11 3:19 ` Igor Stoppa
2018-02-13 2:43 ` kbuild test robot
2018-02-13 2:43 ` kbuild test robot
2018-02-13 2:43 ` kbuild test robot
2018-02-12 16:52 [RFC PATCH v16 0/6] mm: security: ro protection for dynamic data Igor Stoppa
2018-02-12 16:53 ` [PATCH 5/6] Pmalloc: self-test Igor Stoppa
2018-02-12 16:53 ` Igor Stoppa
2018-02-12 16:53 ` Igor Stoppa
2018-02-12 16:53 ` Igor Stoppa
2018-02-12 23:43 ` Kees Cook
2018-02-12 23:43 ` Kees Cook
2018-02-12 23:43 ` Kees Cook
2018-02-20 16:40 ` Igor Stoppa
2018-02-20 16:40 ` Igor Stoppa
2018-02-20 16:40 ` Igor Stoppa
2018-02-21 22:24 ` Kees Cook
2018-02-21 22:24 ` Kees Cook
2018-02-21 22:24 ` Kees Cook
2018-02-22 9:01 ` Igor Stoppa
2018-02-22 9:01 ` Igor Stoppa
2018-02-22 9:01 ` Igor Stoppa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201802080158.oKwP7HVR%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=cl@linux.com \
--cc=hch@infradead.org \
--cc=igor.stoppa@huawei.com \
--cc=jglisse@redhat.com \
--cc=kbuild-all@01.org \
--cc=keescook@chromium.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=labbott@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-security-module@vger.kernel.org \
--cc=mhocko@kernel.org \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.