Commit 4eb0a7c8 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'slab-for-5.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab

Pull slab fixes from Vlastimil Babka:

 - Build fix (workaround) for clang.

 - Fix a /proc/kcore based slabinfo script broken by struct slab changes
   in 5.17-rc1.

* tag 'slab-for-5.17-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab:
  tools/cgroup/slabinfo: update to work with struct slab
  slab: remove __alloc_size attribute from __kmalloc_track_caller
parents 5c1ee569 22194473
...@@ -660,8 +660,7 @@ static inline __alloc_size(1, 2) void *kcalloc(size_t n, size_t size, gfp_t flag ...@@ -660,8 +660,7 @@ static inline __alloc_size(1, 2) void *kcalloc(size_t n, size_t size, gfp_t flag
* allocator where we care about the real place the memory allocation * allocator where we care about the real place the memory allocation
* request comes from. * request comes from.
*/ */
extern void *__kmalloc_track_caller(size_t size, gfp_t flags, unsigned long caller) extern void *__kmalloc_track_caller(size_t size, gfp_t flags, unsigned long caller);
__alloc_size(1);
#define kmalloc_track_caller(size, flags) \ #define kmalloc_track_caller(size, flags) \
__kmalloc_track_caller(size, flags, _RET_IP_) __kmalloc_track_caller(size, flags, _RET_IP_)
......
...@@ -11,7 +11,7 @@ from drgn.helpers.linux import list_for_each_entry, list_empty ...@@ -11,7 +11,7 @@ from drgn.helpers.linux import list_for_each_entry, list_empty
from drgn.helpers.linux import for_each_page from drgn.helpers.linux import for_each_page
from drgn.helpers.linux.cpumask import for_each_online_cpu from drgn.helpers.linux.cpumask import for_each_online_cpu
from drgn.helpers.linux.percpu import per_cpu_ptr from drgn.helpers.linux.percpu import per_cpu_ptr
from drgn import container_of, FaultError, Object from drgn import container_of, FaultError, Object, cast
DESC = """ DESC = """
...@@ -69,15 +69,15 @@ def oo_objects(s): ...@@ -69,15 +69,15 @@ def oo_objects(s):
def count_partial(n, fn): def count_partial(n, fn):
nr_pages = 0 nr_objs = 0
for page in list_for_each_entry('struct page', n.partial.address_of_(), for slab in list_for_each_entry('struct slab', n.partial.address_of_(),
'lru'): 'slab_list'):
nr_pages += fn(page) nr_objs += fn(slab)
return nr_pages return nr_objs
def count_free(page): def count_free(slab):
return page.objects - page.inuse return slab.objects - slab.inuse
def slub_get_slabinfo(s, cfg): def slub_get_slabinfo(s, cfg):
...@@ -145,14 +145,14 @@ def detect_kernel_config(): ...@@ -145,14 +145,14 @@ def detect_kernel_config():
return cfg return cfg
def for_each_slab_page(prog): def for_each_slab(prog):
PGSlab = 1 << prog.constant('PG_slab') PGSlab = 1 << prog.constant('PG_slab')
PGHead = 1 << prog.constant('PG_head') PGHead = 1 << prog.constant('PG_head')
for page in for_each_page(prog): for page in for_each_page(prog):
try: try:
if page.flags.value_() & PGSlab: if page.flags.value_() & PGSlab:
yield page yield cast('struct slab *', page)
except FaultError: except FaultError:
pass pass
...@@ -190,13 +190,13 @@ def main(): ...@@ -190,13 +190,13 @@ def main():
'list'): 'list'):
obj_cgroups.add(ptr.value_()) obj_cgroups.add(ptr.value_())
# look over all slab pages, belonging to non-root memcgs # look over all slab folios and look for objects belonging
# and look for objects belonging to the given memory cgroup # to the given memory cgroup
for page in for_each_slab_page(prog): for slab in for_each_slab(prog):
objcg_vec_raw = page.memcg_data.value_() objcg_vec_raw = slab.memcg_data.value_()
if objcg_vec_raw == 0: if objcg_vec_raw == 0:
continue continue
cache = page.slab_cache cache = slab.slab_cache
if not cache: if not cache:
continue continue
addr = cache.value_() addr = cache.value_()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment