← Back to team overview

kernel-packages team mailing list archive

[Bug 1456952] Re: support the slub_debug boot option on specific object size

 

** Also affects: linux (Ubuntu Utopic)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Vivid)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Trusty)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu Trusty)
       Status: New => Fix Committed

** Changed in: linux (Ubuntu Utopic)
       Status: New => Fix Committed

** Changed in: linux (Ubuntu Vivid)
       Status: New => Fix Committed

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1456952

Title:
  support the slub_debug boot option on specific object size

Status in linux package in Ubuntu:
  Incomplete
Status in linux source package in Trusty:
  Fix Committed
Status in linux source package in Utopic:
  Fix Committed
Status in linux source package in Vivid:
  Fix Committed

Bug description:
  [Impact]

  slub_debug cannot work for specific kmem_cache size.

  e. g. slub_debug=PU,kmalloc-1024

  The slub_debug is used to enable the debugging of use-after-free, poison
  overwritten, double free. And it also increases the up time of the server
  when the above mentioned errors happen instead of crashing immediately.

  However, currently, there exists bug that the slub_debug cannot be applied
  for the specific object size. This is not helpful to enable the whole
  system slub_debug because the performance loss will be up to 20%~30%
  according to the customer's measurement. The patch here to limit the
  slub_debug only on the specific object size to alleviate the performance
  loss.

  [Fix]

  The slub_debug=PU,kmalloc-xx cannot work because in the
  create_kmalloc_caches() the s->name is created after the
  create_kmalloc_cache() is called.  The name is NULL in the
  create_kmalloc_cache() so the kmem_cache_flags() would not set the
  slub_debug flags to the s->flags.  The fix here set up a kmalloc_names
  string array for the initialization purpose and delete the dynamic name
  creation of kmalloc_caches.

  [Test case]

  Install the patched kernel.
  sudo reboot

  sudo vim /etc/default/grub
  append "slub_debug=FPZU,kmalloc-1024" to GRUB_CMDLINE_LINUX_DEFAULT
  sudo update-grub
  sudo reboot

  # Check if the kmalloc-1024 debug options are enabled
  sudo cat /sys/kernel/slab/kmalloc-1024/sanity_checks
  # shoulb be 1
  sudo cat /sys/kernel/slab/kmalloc-1024/red_zone
  # shoulb be 1
  sudo cat /sys/kernel/slab/kmalloc-1024/poison
  # shoulb be 1

  # Check other object size
  sudo cat /sys/kernel/slab/kmalloc-8/sanity_checks
  # shoulb be 0
  sudo cat /sys/kernel/slab/kmalloc-8/red_zone
  # shoulb be 0
  sudo cat /sys/kernel/slab/kmalloc-8/poison
  # shoulb be 0

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1456952/+subscriptions


References