diff options
| author | Linus Torvalds <[email protected]> | 2016-05-23 19:42:28 -0700 | 
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2016-05-23 19:42:28 -0700 | 
| commit | 84787c572d402644dca4874aba73324d9f8e3948 (patch) | |
| tree | 31783e50b09fee00ee7ff87c0c9708a3c7106482 /scripts/gdb/linux/modules.py | |
| parent | d62a0234c87f1457a3d2ba519ef90cf164a5eb23 (diff) | |
| parent | c5d2cac0f1caaf7dd21350146fb29c55b3e74249 (diff) | |
Merge branch 'akpm' (patches from Andrew)
Merge yet more updates from Andrew Morton:
 - Oleg's "wait/ptrace: assume __WALL if the child is traced".  It's a
   kernel-based workaround for existing userspace issues.
 - A few hotfixes
 - befs cleanups
 - nilfs2 updates
 - sys_wait() changes
 - kexec updates
 - kdump
 - scripts/gdb updates
 - the last of the MM queue
 - a few other misc things
* emailed patches from Andrew Morton <[email protected]>: (84 commits)
  kgdb: depends on VT
  drm/amdgpu: make amdgpu_mn_get wait for mmap_sem killable
  drm/radeon: make radeon_mn_get wait for mmap_sem killable
  drm/i915: make i915_gem_mmap_ioctl wait for mmap_sem killable
  uprobes: wait for mmap_sem for write killable
  prctl: make PR_SET_THP_DISABLE wait for mmap_sem killable
  exec: make exec path waiting for mmap_sem killable
  aio: make aio_setup_ring killable
  coredump: make coredump_wait wait for mmap_sem for write killable
  vdso: make arch_setup_additional_pages wait for mmap_sem for write killable
  ipc, shm: make shmem attach/detach wait for mmap_sem killable
  mm, fork: make dup_mmap wait for mmap_sem for write killable
  mm, proc: make clear_refs killable
  mm: make vm_brk killable
  mm, elf: handle vm_brk error
  mm, aout: handle vm_brk failures
  mm: make vm_munmap killable
  mm: make vm_mmap killable
  mm: make mmap_sem for write waits killable for mm syscalls
  MAINTAINERS: add co-maintainer for scripts/gdb
  ...
Diffstat (limited to 'scripts/gdb/linux/modules.py')
| -rw-r--r-- | scripts/gdb/linux/modules.py | 24 | 
1 files changed, 11 insertions, 13 deletions
| diff --git a/scripts/gdb/linux/modules.py b/scripts/gdb/linux/modules.py index 0a35d6dbfb80..441b23239896 100644 --- a/scripts/gdb/linux/modules.py +++ b/scripts/gdb/linux/modules.py @@ -13,7 +13,7 @@  import gdb -from linux import cpus, utils +from linux import cpus, utils, lists  module_type = utils.CachedType("struct module") @@ -21,14 +21,14 @@ module_type = utils.CachedType("struct module")  def module_list():      global module_type +    modules = utils.gdb_eval_or_none("modules") +    if modules is None: +        return +      module_ptr_type = module_type.get_type().pointer() -    modules = gdb.parse_and_eval("modules") -    entry = modules['next'] -    end_of_list = modules.address -    while entry != end_of_list: -        yield utils.container_of(entry, module_ptr_type, "list") -        entry = entry['next'] +    for module in lists.list_for_each_entry(modules, module_ptr_type, "list"): +        yield module  def find_module_by_name(name): @@ -78,19 +78,17 @@ class LxLsmod(gdb.Command):                  address=str(layout['base']).split()[0],                  name=module['name'].string(),                  size=str(layout['size']), -                ref=str(module['refcnt']['counter']))) +                ref=str(module['refcnt']['counter'] - 1))) -            source_list = module['source_list']              t = self._module_use_type.get_type().pointer() -            entry = source_list['next']              first = True -            while entry != source_list.address: -                use = utils.container_of(entry, t, "source_list") +            sources = module['source_list'] +            for use in lists.list_for_each_entry(sources, t, "source_list"):                  gdb.write("{separator}{name}".format(                      separator=" " if first else ",",                      name=use['source']['name'].string()))                  first = False -                entry = entry['next'] +              gdb.write("\n") |