git: kernel - Relax requirements for sysctl operations on longs

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Dec 17 21:49:55 PST 2017


commit 83ed56857dc47610d1c0156612e06093364d3509
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Dec 17 21:45:34 2017 -0800

    kernel - Relax requirements for sysctl operations on longs
    
    * Relax the requirements for sysctl operations on longs.  Allow the
      case where userland is reading the sysctl variable as an integer
      instead of a long.
    
    * Allows us to promote various vm.stats.vm_* fields that must now be
      longs in order to support > 8TB of ram as well as avoid internal
      calculation overflows.
    
    * Fixes an issue where chrome issues this sysctl as an int:
    
      sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
    
      And fails to check the return value / error code, resulting in
      a garbage value for 'pages' which chrome then uses to size the
      browser's memory restrains.  This in turn was causing chrome
      to give up multiple tabs thinking it had run out of memory when,
      in fact, there is plenty of memory available.
    
    * Generally speaking, I've wanted to have this sort of backwards
      compatibility for a while now.  Userland shouldn't get errors
      accesing integral sysctl values simply because it uses an integer
      of a different size than the sysctl.

Summary of changes:
 sys/kern/kern_sysctl.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/83ed56857dc47610d1c0156612e06093364d3509


-- 
DragonFly BSD source repository



More information about the Commits mailing list