Skip to content

Commit 8dae0cf

Browse files
committed
mm/kfence: Convert kfence_guarded_alloc() to struct slab
The function sets some fields that are being moved from struct page to struct slab so it needs to be converted. Signed-off-by: Vlastimil Babka <[email protected]> Tested-by: Marco Elver <[email protected]> Cc: Alexander Potapenko <[email protected]> Cc: Marco Elver <[email protected]> Cc: Dmitry Vyukov <[email protected]> Cc: <[email protected]>
1 parent 6e48a96 commit 8dae0cf

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

mm/kfence/core.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ static void *kfence_guarded_alloc(struct kmem_cache *cache, size_t size, gfp_t g
360360
{
361361
struct kfence_metadata *meta = NULL;
362362
unsigned long flags;
363-
struct page *page;
363+
struct slab *slab;
364364
void *addr;
365365

366366
/* Try to obtain a free object. */
@@ -424,13 +424,13 @@ static void *kfence_guarded_alloc(struct kmem_cache *cache, size_t size, gfp_t g
424424

425425
alloc_covered_add(alloc_stack_hash, 1);
426426

427-
/* Set required struct page fields. */
428-
page = virt_to_page(meta->addr);
429-
page->slab_cache = cache;
427+
/* Set required slab fields. */
428+
slab = virt_to_slab((void *)meta->addr);
429+
slab->slab_cache = cache;
430430
if (IS_ENABLED(CONFIG_SLUB))
431-
page->objects = 1;
431+
slab->objects = 1;
432432
if (IS_ENABLED(CONFIG_SLAB))
433-
page->s_mem = addr;
433+
slab->s_mem = addr;
434434

435435
/* Memory initialization. */
436436
for_each_canary(meta, set_canary_byte);

mm/kfence/kfence_test.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ static void *test_alloc(struct kunit *test, size_t size, gfp_t gfp, enum allocat
282282
alloc = kmalloc(size, gfp);
283283

284284
if (is_kfence_address(alloc)) {
285-
struct page *page = virt_to_head_page(alloc);
285+
struct slab *slab = virt_to_slab(alloc);
286286
struct kmem_cache *s = test_cache ?:
287287
kmalloc_caches[kmalloc_type(GFP_KERNEL)][__kmalloc_index(size, false)];
288288

@@ -291,8 +291,8 @@ static void *test_alloc(struct kunit *test, size_t size, gfp_t gfp, enum allocat
291291
* even for KFENCE objects; these are required so that
292292
* memcg accounting works correctly.
293293
*/
294-
KUNIT_EXPECT_EQ(test, obj_to_index(s, page_slab(page), alloc), 0U);
295-
KUNIT_EXPECT_EQ(test, objs_per_slab(s, page_slab(page)), 1);
294+
KUNIT_EXPECT_EQ(test, obj_to_index(s, slab, alloc), 0U);
295+
KUNIT_EXPECT_EQ(test, objs_per_slab(s, slab), 1);
296296

297297
if (policy == ALLOCATE_ANY)
298298
return alloc;

0 commit comments

Comments
 (0)