1. 01 Apr, 2012 6 commits
    • Kyle McMartin's avatar
      hwmon: (acpi_power_meter) fix lockdep spew due to non-static lock class · 31e354ee
      Kyle McMartin authored
      Similar to a30dcb4f which fixed asus_atk0110.ko, I recently received a
      bug report from someone hitting the same issue in acpi_power_meter.
      
      [   13.963168] power_meter ACPI000D:00: Found ACPI power meter.
      [   13.963900] BUG: key ffff8802161f3920 not in .data!
      [   13.963904] ------------[ cut here ]------------
      [   13.963915] WARNING: at kernel/lockdep.c:2986
      	lockdep_init_map+0x52f/0x560()
      
      So let's fix that up for them by statically declaring the
      lockdep_class_key.
      Signed-off-by: default avatarKyle McMartin <kyle@redhat.com>
      Cc: stable@vger.kernel.org # 3.0+
      Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
      31e354ee
    • Guenter Roeck's avatar
      hwmon: (adm1031) Fix compiler warning · ce15a81d
      Guenter Roeck authored
      Some configurations produce the following compile warning:
      
      drivers/hwmon/adm1031.c: In function 'set_fan_auto_channel':
      drivers/hwmon/adm1031.c:292: warning: 'reg' may be used uninitialized in this function
      
      While this is a false positive, it can easily be fixed by overloading the return
      value from get_fan_auto_nearest with both register value and error return code
      (the register value is never negative). Coincidentially, that also reduces
      module size by a few bytes.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      ce15a81d
    • Guenter Roeck's avatar
      hwmon: (f75375s) Fix warning message seen in some configurations · 6394011d
      Guenter Roeck authored
      In some configurations, BUG() does not result in an endless loop but returns to
      the caller. This results in the following compiler warning:
      
      drivers/hwmon/f75375s.c: In function 'duty_mode_enabled':
      drivers/hwmon/f75375s.c:280: warning: control reaches end of non-void function
      drivers/hwmon/f75375s.c: In function 'auto_mode_enabled':
      drivers/hwmon/f75375s.c:295: warning: control reaches end of non-void function
      
      Fix the warning by returning something sensible after BUG().
      
      Cc: Nikolaus Schulz <schulz@macnetix.de>
      Cc: Riku Voipio <riku.voipio@iki.fi>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
      6394011d
    • Mark Brown's avatar
      hwmon: (max6639) Convert to dev_pm_ops · 52f30f77
      Mark Brown authored
      The I2C specific PM operations have been deprecated and printing a
      warning on boot for over a year now.
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      [guenter.roeck@ericsson.com: Added missing #ifdef around pm functions]
      Cc: stable@vger.kernel.org # 3.0+
      Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
      52f30f77
    • Guenter Roeck's avatar
      hwmon: (sht15) Fix Kconfig dependencies · be45d422
      Guenter Roeck authored
      sht15 depends on GPIOLIB, not on GENERIC_GPIO.
      
      This fixes the following build error, seen if GPIOLIB is not defined:
      
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_direction_input': => 293:2
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_direction_output': => 216:2
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_free': => 1000:2
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_get_value': => 296:2
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_request': => 946:2
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_set_value': => 218:2
      src/drivers/hwmon/sht15.c: error: implicit declaration of function 'gpio_to_irq': => 514:2
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      be45d422
    • Guenter Roeck's avatar
      hwmon: (gpio-fan) Fix Kconfig dependencies · c1a12602
      Guenter Roeck authored
      gpio-fan depends on GPIOLIB, not on GENERIC_GPIO.
      
      This fixes the following build error, seen if GPIOLIB is not defined:
      
      src/drivers/hwmon/gpio-fan.c: error: implicit declaration of function 'gpio_direction_output': => 372:3
      src/drivers/hwmon/gpio-fan.c: error: implicit declaration of function 'gpio_free': => 130:2
      src/drivers/hwmon/gpio-fan.c: error: implicit declaration of function 'gpio_get_value': => 79:2
      src/drivers/hwmon/gpio-fan.c: error: implicit declaration of function 'gpio_request': => 98:2
      src/drivers/hwmon/gpio-fan.c: error: implicit declaration of function 'gpio_set_value': => 156:3
      src/drivers/hwmon/gpio-fan.c: error: implicit declaration of function 'gpio_to_irq': => 114:2
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Acked-by: default avatarSimon Guinot <sguinot@lacie.com>
      c1a12602
  2. 31 Mar, 2012 34 commits
    • Linus Torvalds's avatar
      Linux 3.4-rc1 · dd775ae2
      Linus Torvalds authored
      dd775ae2
    • Linus Torvalds's avatar
      Merge branch 's3-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/amit/virtio-console · b7ffff4b
      Linus Torvalds authored
      Pull virtio S3 support patches from Amit Shah:
       "Turns out S3 is not different from S4 for virtio devices: the device
        is assumed to be reset, so the host and guest state are to be assumed
        to be out of sync upon resume.  We handle the S4 case with exactly the
        same scenario, so just point the suspend/resume routines to the
        freeze/restore ones.
      
        Once that is done, we also use the PM API's macro to initialise the
        sleep functions.
      
        A couple of cleanups are included: there's no need for special thaw
        processing in the balloon driver, so that's addressed in patches 1 and
        2.
      
        Testing: both S3 and S4 support have been tested using these patches
        using a similar method used earlier during S4 patch development: a
        guest is started with virtio-blk as the only disk, a virtio network
        card, a virtio-serial port and a virtio balloon device.  Ping from
        guest to host, dd /dev/zero to a file on the disk, and IO from the
        host on the virtio-serial port, all at once, while exercising S4 and
        S3 (separately) were tested.  They all continue to work fine after
        resume.  virtio balloon values too were tested by inflating and
        deflating the balloon."
      
      Pulling from Amit, since Rusty is off getting married (and presumably
      shaving people).
      
      * 's3-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/amit/virtio-console:
        virtio-pci: switch to PM ops macro to initialise PM functions
        virtio-pci: S3 support
        virtio-pci: drop restore_common()
        virtio: drop thaw PM operation
        virtio: balloon: Allow stats update after restore from S4
      b7ffff4b
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 8bb1f229
      Linus Torvalds authored
      Pull second try at vfs part d#2 from Al Viro:
       "Miklos' first series (with do_lookup() rewrite split into edible
        chunks) + assorted bits and pieces.
      
        The 'untangling of do_lookup()' series is is a splitup of what used to
        be a monolithic patch from Miklos, so this series is basically "how do
        I convince myself that his patch is correct (or find a hole in it)".
        No holes found and I like the resulting cleanup, so in it went..."
      
      Changes from try 1: Fix a boot problem with selinux, and commit messages
      prettied up a bit.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (24 commits)
        vfs: fix out-of-date dentry_unhash() comment
        vfs: split __lookup_hash
        untangling do_lookup() - take __lookup_hash()-calling case out of line.
        untangling do_lookup() - switch to calling __lookup_hash()
        untangling do_lookup() - merge d_alloc_and_lookup() callers
        untangling do_lookup() - merge failure exits in !dentry case
        untangling do_lookup() - massage !dentry case towards __lookup_hash()
        untangling do_lookup() - get rid of need_reval in !dentry case
        untangling do_lookup() - eliminate a loop.
        untangling do_lookup() - expand the area under ->i_mutex
        untangling do_lookup() - isolate !dentry stuff from the rest of it.
        vfs: move MAY_EXEC check from __lookup_hash()
        vfs: don't revalidate just looked up dentry
        vfs: fix d_need_lookup/d_revalidate order in do_lookup
        ext3: move headers to fs/ext3/
        migrate ext2_fs.h guts to fs/ext2/ext2.h
        new helper: ext2_image_size()
        get rid of pointless includes of ext2_fs.h
        ext2: No longer export ext2_fs.h to user space
        mtdchar: kill persistently held vfsmount
        ...
      8bb1f229
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f22e08a7
      Linus Torvalds authored
      Pull scheduler fixes from Ingo Molnar.
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched: Fix incorrect usage of for_each_cpu_mask() in select_fallback_rq()
        sched: Fix __schedule_bug() output when called from an interrupt
        sched/arch: Introduce the finish_arch_post_lock_switch() scheduler callback
      f22e08a7
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f187e9fd
      Linus Torvalds authored
      Pull perf updates and fixes from Ingo Molnar:
       "It's mostly fixes, but there's also two late items:
      
         - preliminary GTK GUI support for perf report
         - PMU raw event format descriptors in sysfs, to be parsed by tooling
      
        The raw event format in sysfs is a new ABI.  For example for the 'CPU'
        PMU we have:
      
          aldebaran:~> ll /sys/bus/event_source/devices/cpu/format/*
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/any
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/cmask
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/edge
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/event
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/inv
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/offcore_rsp
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/pc
          -r--r--r--. 1 root root 4096 Mar 31 10:29 /sys/bus/event_source/devices/cpu/format/umask
      
        those lists of fields contain a specific format:
      
          aldebaran:~> cat /sys/bus/event_source/devices/cpu/format/offcore_rsp
          config1:0-63
      
        So, those who wish to specify raw events can now use the following
        event format:
      
          -e cpu/cmask=1,event=2,umask=3
      
        Most people will not want to specify any events (let alone raw
        events), they'll just use whatever default event the tools use.
      
        But for more obscure PMU events that have no cross-architecture
        generic events the above syntax is more usable and a bit more
        structured than specifying hex numbers."
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
        perf tools: Remove auto-generated bison/flex files
        perf annotate: Fix off by one symbol hist size allocation and hit accounting
        perf tools: Add missing ref-cycles event back to event parser
        perf annotate: addr2line wants addresses in same format as objdump
        perf probe: Finder fails to resolve function name to address
        tracing: Fix ent_size in trace output
        perf symbols: Handle NULL dso in dso__name_len
        perf symbols: Do not include libgen.h
        perf tools: Fix bug in raw sample parsing
        perf tools: Fix display of first level of callchains
        perf tools: Switch module.h into export.h
        perf: Move mmap page data_head offset assertion out of header
        perf: Fix mmap_page capabilities and docs
        perf diff: Fix to work with new hists design
        perf tools: Fix modifier to be applied on correct events
        perf tools: Fix various casting issues for 32 bits
        perf tools: Simplify event_read_id exit path
        tracing: Fix ftrace stack trace entries
        tracing: Move the tracing_on/off() declarations into CONFIG_TRACING
        perf report: Add a simple GTK2-based 'perf report' browser
        ...
      f187e9fd
    • Linus Torvalds's avatar
      Merge tag 'parisc-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6 · adb3b1f3
      Linus Torvalds authored
      Pull PARISC misc updates from James Bottomley:
       "This is a couple of minor updates (fixing lws futex locking and
        removing some obsolete cpu_*_map calls)."
      
      * tag 'parisc-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6:
        [PARISC] remove references to cpu_*_map.
        [PARISC] futex: Use same lock set as lws calls
      adb3b1f3
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · a75ee6ec
      Linus Torvalds authored
      Pull SCSI updates from James Bottomley:
       "This is primarily another round of driver updates (lpfc, bfa, fcoe,
        ipr) plus a new ufshcd driver.  There shouldn't be anything
        controversial in here (The final deletion of scsi proc_ops which
        caused some build breakage has been held over until the next merge
        window to give us more time to stabilise it).
      
        I'm afraid, with me moving continents at exactly the wrong time,
        anything submitted after the merge window opened has been held over to
        the next merge window."
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (63 commits)
        [SCSI] ipr: Driver version 2.5.3
        [SCSI] ipr: Increase alignment boundary of command blocks
        [SCSI] ipr: Increase max concurrent oustanding commands
        [SCSI] ipr: Remove unnecessary memory barriers
        [SCSI] ipr: Remove unnecessary interrupt clearing on new adapters
        [SCSI] ipr: Fix target id allocation re-use problem
        [SCSI] atp870u, mpt2sas, qla4xxx use pci_dev->revision
        [SCSI] fcoe: Drop the rtnl_mutex before calling fcoe_ctlr_link_up
        [SCSI] bfa: Update the driver version to 3.0.23.0
        [SCSI] bfa: BSG and User interface fixes.
        [SCSI] bfa: Fix to avoid vport delete hang on request queue full scenario.
        [SCSI] bfa: Move service parameter programming logic into firmware.
        [SCSI] bfa: Revised Fabric Assigned Address(FAA) feature implementation.
        [SCSI] bfa: Flash controller IOC pll init fixes.
        [SCSI] bfa: Serialize the IOC hw semaphore unlock logic.
        [SCSI] bfa: Modify ISR to process pending completions
        [SCSI] bfa: Add fc host issue lip support
        [SCSI] mpt2sas: remove extraneous sas_log_info messages
        [SCSI] libfc: fcoe_transport_create fails in single-CPU environment
        [SCSI] fcoe: reduce contention for fcoe_rx_list lock [v2]
        ...
      a75ee6ec
    • J. Bruce Fields's avatar
      vfs: fix out-of-date dentry_unhash() comment · c0d02594
      J. Bruce Fields authored
      64252c75 "vfs: remove dget() from
      dentry_unhash()" changed the implementation but not the comment.
      
      Cc: Sage Weil <sage@newdream.net>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      c0d02594
    • Miklos Szeredi's avatar
      vfs: split __lookup_hash · bad61189
      Miklos Szeredi authored
      Split __lookup_hash into two component functions:
      
       lookup_dcache - tries cached lookup, returns whether real lookup is needed
       lookup_real - calls i_op->lookup
      
      This eliminates code duplication between d_alloc_and_lookup() and
      d_inode_lookup().
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      bad61189
    • Al Viro's avatar
    • Al Viro's avatar
      untangling do_lookup() - switch to calling __lookup_hash() · a3255546
      Al Viro authored
      now we have __lookup_hash() open-coded if !dentry case;
      just call the damn thing instead...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      a3255546
    • Al Viro's avatar
      a6ecdfcf
    • Al Viro's avatar
      ec335e91
    • Al Viro's avatar
      untangling do_lookup() - massage !dentry case towards __lookup_hash() · d774a058
      Al Viro authored
      Reorder if-else cases for starters...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      d774a058
    • Al Viro's avatar
      untangling do_lookup() - get rid of need_reval in !dentry case · 08b0ab7c
      Al Viro authored
      Everything arriving into if (!dentry) will have need_reval = 1.
      Indeed, the only way to get there with need_reval reset to 0 would
      be via
      	if (unlikely(d_need_lookup(dentry)))
      		goto unlazy;
      	if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE)) {
      		status = d_revalidate(dentry, nd);
      	if (unlikely(status <= 0)) {
      		if (status != -ECHILD)
      			need_reval = 0;
      		goto unlazy;
      ...
      unlazy:
      	/* no assignments to dentry */
      	if (dentry && unlikely(d_need_lookup(dentry))) {
      		dput(dentry);
      		dentry = NULL;
      	}
      and if d_need_lookup() had already been false the first time around, it
      will remain false on the second call as well.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      08b0ab7c
    • Al Viro's avatar
      untangling do_lookup() - eliminate a loop. · acc9cb3c
      Al Viro authored
      d_lookup() *will* fail after successful d_invalidate(), if we are
      holding i_mutex all along.  IOW, we don't need to jump back to
      l: - we know what path will be taken there and can do that (i.e.
      d_alloc_and_lookup()) directly.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      acc9cb3c
    • Al Viro's avatar
      untangling do_lookup() - expand the area under ->i_mutex · 37c17e1f
      Al Viro authored
      keep holding ->i_mutex over revalidation parts
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      37c17e1f
    • Al Viro's avatar
      untangling do_lookup() - isolate !dentry stuff from the rest of it. · 3f6c7c71
      Al Viro authored
      Duplicate the revalidation-related parts into if (!dentry) branch.
      Next step will be to pull them under i_mutex.
      
      This and the next 8 commits are more or less a splitup of patch
      by Miklos; folks, when you are working with something that convoluted,
      carve your patches up into easily reviewed steps, especially when
      a lot of codepaths involved are rarely hit...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      3f6c7c71
    • Miklos Szeredi's avatar
      vfs: move MAY_EXEC check from __lookup_hash() · cda309de
      Miklos Szeredi authored
      The only caller of __lookup_hash() that needs the exec permission check on
      parent is lookup_one_len().
      
      All lookup_hash() callers already checked permission in LOOKUP_PARENT walk.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      cda309de
    • Miklos Szeredi's avatar
      vfs: don't revalidate just looked up dentry · 3637c05d
      Miklos Szeredi authored
      __lookup_hash() calls ->lookup() if the dentry needs lookup and on success
      revalidates the dentry (all under dir->i_mutex).
      
      While this is harmless it doesn't make a lot of sense.
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      3637c05d
    • Miklos Szeredi's avatar
      vfs: fix d_need_lookup/d_revalidate order in do_lookup · fa4ee159
      Miklos Szeredi authored
      Doing revalidate on a dentry which has not yet been looked up makes no sense.
      
      Move the d_need_lookup() check before d_revalidate().
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      fa4ee159
    • Al Viro's avatar
      ext3: move headers to fs/ext3/ · 4613ad18
      Al Viro authored
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      4613ad18
    • Al Viro's avatar
      migrate ext2_fs.h guts to fs/ext2/ext2.h · f7699f2b
      Al Viro authored
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      f7699f2b
    • Al Viro's avatar
      new helper: ext2_image_size() · 39429c5e
      Al Viro authored
      ... implemented that way since the next commit will leave it
      almost alone in ext2_fs.h - most of the file (including
      struct ext2_super_block) is going to move to fs/ext2/ext2.h.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      39429c5e
    • Al Viro's avatar
      get rid of pointless includes of ext2_fs.h · 2f99c369
      Al Viro authored
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      2f99c369
    • Thierry Reding's avatar
      ext2: No longer export ext2_fs.h to user space · 4a165d25
      Thierry Reding authored
      Since the on-disk format has been stable for quite some time, users
      should either use the headers provided by libext2fs or keep a private
      copy of this header. For the full discussion, see this thread:
      
      	https://lkml.org/lkml/2012/3/21/516
      
      While at it, this commit removes all __KERNEL__ guards, which are now
      unnecessary.
      Signed-off-by: default avatarThierry Reding <thierry.reding@avionic-design.de>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Jan Kara <jack@suse.cz>
      Cc: Ted Ts'o <tytso@mit.edu>
      Cc: Artem Bityutskiy <dedekind1@gmail.com>
      Cc: Andreas Dilger <aedilger@gmail.com>
      Cc: linux-ext4@vger.kernel.org
      4a165d25
    • Al Viro's avatar
      mtdchar: kill persistently held vfsmount · 00292bbf
      Al Viro authored
      ... and mtdchar_notifier along with it; just have ->drop_inode() that
      will unconditionally get evict them instead of dances on mtd device
      removal and use simple_pin_fs() instead of kern_mount()
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      00292bbf
    • Al Viro's avatar
      pstore: trim pstore_get_inode() · 22a71c30
      Al Viro authored
      move mode-dependent parts to callers, kill unused arguments
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      22a71c30
    • Al Viro's avatar
      a2e1859a
    • Al Viro's avatar
      06af121e
    • Al Viro's avatar
      a1c2aa1e
    • Matthew Garrett's avatar
      ASPM: Fix pcie devices with non-pcie children · c9651e70
      Matthew Garrett authored
      Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON.
      Some other systems using the pata_jmicron driver fail to boot because no
      disks are detected.  Passing pcie_aspm=force on the kernel command line
      works around it.
      
      The cause: commit 4949be16 ("PCI: ignore pre-1.1 ASPM quirking when
      ASPM is disabled") changed the behaviour of pcie_aspm_sanity_check() to
      always return 0 if aspm is disabled, in order to avoid cases where we
      changed ASPM state on pre-PCIe 1.1 devices.
      
      This skipped the secondary function of pcie_aspm_sanity_check which was
      to avoid us enabling ASPM on devices that had non-PCIe children, causing
      trouble later on.  Move the aspm_disabled check so we continue to honour
      that scenario.
      
      Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and
                http://bugs.debian.org/665420
      
      Reported-by: Romain Francoise <romain@orebokech.com> # kernel panic
      Reported-by: Chris Holland <bandidoirlandes@gmail.com> # disk detection trouble
      Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
      Cc: stable@vger.kernel.org
      Tested-by: Hatem Masmoudi <hatem.masmoudi@gmail.com> # Dell Latitude E5520
      Tested-by: janek <jan0x6c@gmail.com> # pata_jmicron with JMB362/JMB363
      [jn: with more symptoms in log message]
      Signed-off-by: default avatarJonathan Nieder <jrnieder@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c9651e70
    • Linus Torvalds's avatar
      selinux: inline avc_audit() and avc_has_perm_noaudit() into caller · cdb0f9a1
      Linus Torvalds authored
      Now that all the slow-path code is gone from these functions, we can
      inline them into the main caller - avc_has_perm_flags().
      
      Now the compiler can see that 'avc' is allocated on the stack for this
      case, which helps register pressure a bit.  It also actually shrinks the
      total stack frame, because the stack frame that avc_has_perm_flags()
      always needed (for that 'avc' allocation) is now sufficient for the
      inlined functions too.
      
      Inlining isn't bad - but mindless inlining of cold code (see the
      previous commit) is.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      cdb0f9a1
    • Linus Torvalds's avatar
      selinux: don't inline slow-path code into avc_has_perm_noaudit() · a554bea8
      Linus Torvalds authored
      The selinux AVC paths remain some of the hottest (and deepest) codepaths
      at filename lookup time, and we make it worse by having the slow path
      cases take up I$ and stack space even when they don't trigger.  Gcc
      tends to always want to inline functions that are just called once -
      never mind that this might make for slower and worse code in the caller.
      
      So this tries to improve on it a bit by making the slow-path cases
      explicitly separate functions that are marked noinline, causing gcc to
      at least no longer allocate stack space for them unless they are
      actually called.  It also seems to help register allocation a tiny bit,
      since gcc now doesn't take the slow case code into account.
      
      Uninlining the slow path may also allow us to inline the remaining hot
      path into the one caller that actually matters: avc_has_perm_flags().
      I'll have to look at that separately, but both avc_audit() and
      avc_has_perm_noaudit() are now small and lean enough that inlining them
      may make sense.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a554bea8