13 Jan, 2010

1 commit


07 Jan, 2010

1 commit

  • With the recent irq migration fixes (post 2.6.32), Gary Hade has noticed
    "No IRQ handler for vector" messages during the 2.6.33-rc1 kernel boot on IBM
    AMD platforms and root caused the issue to this commit:

    > commit 23359a88e7eca3c4f402562b102f23014db3c2aa
    > Author: Suresh Siddha
    > Date: Mon Oct 26 14:24:33 2009 -0800
    >
    > x86: Remove move_cleanup_count from irq_cfg

    As part of this patch, we have removed the move_cleanup_count check
    in smp_irq_move_cleanup_interrupt(). With this change, we can run into a
    situation where an irq cleanup interrupt on a cpu can cleanup the vector
    mappings associated with multiple irqs, of which one of the irq's migration
    might be still in progress. As such when that irq hits the old cpu, we get
    the "No IRQ handler" messages.

    Fix this by checking for the irq_cfg's move_in_progress and if the move
    is still in progress delay the vector cleanup to another irq cleanup
    interrupt request (which will happen when the irq starts arriving at the
    new cpu destination).

    Reported-and-tested-by: Gary Hade
    Signed-off-by: Suresh Siddha
    LKML-Reference:
    Cc: Eric W. Biederman
    Signed-off-by: H. Peter Anvin

    Suresh Siddha
     

06 Jan, 2010

1 commit

  • Callers of copy_from_user() expect it to return the number of bytes
    it could not copy. In no case it is supposed to return -EFAULT.

    In case of a detected buffer overflow just return the requested
    length. In addition one could think of a memset that would clear
    the size of the target object.

    [ hpa: code is not in .32 so not needed for -stable ]

    Signed-off-by: Heiko Carstens
    Acked-by: Arjan van de Ven
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Heiko Carstens
     

05 Jan, 2010

3 commits

  • This reverts commit ae1b22f6e46c03cede7cea234d0bf2253b4261cf.

    As Linus said in 982d007a6ee: "There was something really messy about
    cmpxchg8b and clone CPU's, so if you enable it on other CPUs later, do it
    carefully."

    This breaks lguest for those configs, but we can fix that by emulating
    if we have to.

    Fixes: http://bugzilla.kernel.org/show_bug.cgi?id=14884
    Signed-off-by: Rusty Russell
    LKML-Reference:
    Cc: stable@kernel.org
    Signed-off-by: H. Peter Anvin

    Rusty Russell
     
  • It is above 0x100 (PCI-Express extended register space), so if mmconf
    is not enable, we can't access it.

    [ hpa: changed the bound from 0x200 to 0x120, which is the tight
    bound. ]

    Reported-by: Jens Axboe
    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • fix for error that is introduced by
    | x86: Use find_e820() instead of hard coded trampoline address

    it should end with PAGE_SIZE + PAGE_SIZE

    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     

31 Dec, 2009

1 commit

  • Stephen Rothwell reported the following build warning:

    lib/dma-debug.c: In function 'dma_debug_device_change':
    lib/dma-debug.c:680: warning: 'return' with no value, in function returning non-void

    Introduced by commit f797d9881b62c2ddb1d2e7bd80d87141949c84aa
    ("dma-debug: Do not add notifier when dma debugging is disabled").

    Return 0 [notify-done] when disabled. (this is standard bus notifier behavior.)

    Signed-off-by: Shaun Ruffell
    Signed-off-by: Joerg Roedel
    Cc: Linus Torvalds
    Cc:
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

30 Dec, 2009

1 commit

  • with CONFIG_GART_IOMMU enabled drivers/char/agp/amd64-agp.c has:

    #ifndef CONFIG_GART_IOMMU
    module_init(agp_amd64_init);
    module_exit(agp_amd64_cleanup);
    #endif

    agp_amd64_init() was called via gart_iommu_init with
    CONFIG_GART_IOMMU=y agp_amd64_init() was called via module_init
    with CONFIG_GART_IOMMU=n

    The commit 75f1cdf1dda92cae037ec848ae63690d91913eac changes the
    x86 dma initialization routine: gart_iommu_init() is called only
    when GART IOMMU is detected. So when GART IOMMU isn't detected,
    agp_amd64_init isn't called.

    Marin Mitov reported this issue:

    http://marc.info/?l=linux-kernel&m=126192729110083&w=2

    With this patch, agp_amd64_init() is always called via
    module_init (the above ifndef is removed). If agp_amd64_init()
    is called via gart_iommu_init() earlier, agp_amd64_init()
    finishes without doing anything (when it is called via
    module_init).

    Reported-by: Marin Mitov
    Tested-by: Marin Mitov
    Signed-off-by: FUJITA Tomonori
    Cc: davej@redhat.com
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    FUJITA Tomonori
     

29 Dec, 2009

1 commit

  • The wrong address was being used to write the SCIR led regs on
    remote hubs. Also, there was an inconsistency between how BIOS
    and the kernel indexed these regs. Standardize on using the
    lower 6 bits of the APIC ID as the index.

    This patch fixes the problem of writing to an errant address to
    a cpu # >= 64.

    Signed-off-by: Mike Travis
    Reviewed-by: Jack Steiner
    Cc: Robin Holt
    Cc: Linus Torvalds
    Cc: stable@kernel.org
    LKML-Reference:
    [ v2: fix a number of annoying checkpatch artifacts and whitespace noise ]
    Signed-off-by: Ingo Molnar

    Mike Travis
     

28 Dec, 2009

3 commits

  • As suggested by Vegard Nossum, use KERN_WARNING for error
    reporting to make sure kmemcheck reports end up in syslog.

    Suggested-by: Vegard Nossum
    Signed-off-by: Pekka Enberg
    Cc: Andrew Morton
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Pekka Enberg
     
  • Andrew Morton reported a strange looking kmemcheck warning:

    WARNING: kmemcheck: Caught 32-bit read from uninitialized memory (ffff88004fba6c20)
    0000000000000000310000000000000000000000000000002413000000c9ffff
    u u u u u u u u u u u u u u u u i i i i i i i i u u u u u u u u

    [] kmemleak_scan+0x25a/0x540
    [] kmemleak_scan_thread+0x5b/0xe0
    [] kthread+0x9e/0xb0
    [] kernel_thread_helper+0x4/0x10
    [] 0xffffffffffffffff

    The above printout is missing register dump completely. The
    problem here is that the output comes from syslog which doesn't
    show KERN_INFO log-level messages. We didn't see this before
    because both of us were testing on 32-bit kernels which use the
    _default_ log-level.

    Fix that up by explicitly using KERN_DEFAULT log-level for
    __show_regs() printks.

    Signed-off-by: Pekka Enberg
    Cc: Vegard Nossum
    Cc: Andrew Morton
    Cc: Arjan van de Ven
    Cc: Linus Torvalds
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Pekka Enberg
     
  • …/linux-2.6-iommu into x86/urgent

    Ingo Molnar
     

26 Dec, 2009

1 commit

  • Recently, some distros have started shipping versions of gcc which
    default to -march=i686. This breaks building kernels for pre-i686
    machines, even if they have been selected in Kconfig, due to the
    generation of CMOV instructions.

    There isn't enough benefit to try to preserve the generation of these
    instructions even when selected, so simply force -march=i386 for the
    decompressor when building a 32-bit kernel.

    Reported-and-tested-by: Chris Rankin
    Signed-off-by: H. Peter Anvin
    LKML-Reference:

    H. Peter Anvin
     

21 Dec, 2009

3 commits

  • Joerg Roedel
     
  • The assumption that acpi_table_parse passes the return value
    of the hanlder function to the caller proved wrong
    recently. The return value of the handler function is
    totally ignored. This makes the initialization code for AMD
    IOMMU buggy in a way that could cause a kernel panic on
    initialization. This patch fixes the issue in the AMD IOMMU
    driver.

    Cc: stable@kernel.org
    Signed-off-by: Joerg Roedel

    Joerg Roedel
     
  • If CONFIG_HAVE_DMA_API_DEBUG is defined and "dma_debug=off" is
    specified on the kernel command line, when you detach a driver from a
    device you can cause the following NULL pointer dereference:

    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [] dma_debug_device_change+0x5d/0x117

    The problem is that the dma_debug_device_change notifier function is
    added to the bus notifier chain even though the dma_entry_hash array
    was never initialized. If dma debugging is disabled, this patch both
    prevents dma_debug_device_change notifiers from being added to the
    chain, and additionally ensures that the dma_debug_device_change
    notifier function is a no-op.

    Cc: stable@kernel.org
    Signed-off-by: Shaun Ruffell
    Signed-off-by: Joerg Roedel

    Shaun Ruffell
     

19 Dec, 2009

1 commit

  • Different version of objdump says its version in different way;

    GNU objdump 2.16.1

    or

    GNU objdump version 2.19.51.0.14-1.fc11 20090722

    This patch uses the first argument which starts with a number
    as version string.

    Changes in v2:
    - Remove unneeded increment.

    Signed-off-by: Masami Hiramatsu
    LKML-Reference:
    Suggested-by: H. Peter Anvin
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Andrew Morton
    Signed-off-by: H. Peter Anvin

    Masami Hiramatsu
     

18 Dec, 2009

23 commits

  • John Blackwood reported:
    > on an older Dell PowerEdge 6650 system with 8 cpus (4 are hyper-threaded),
    > and 32 bit (x86) kernel, once you change the irq smp_affinity of an irq
    > to be less than all cpus in the system, you can never change really the
    > irq smp_affinity back to be all cpus in the system (0xff) again,
    > even though no error status is returned on the "/bin/echo ff >
    > /proc/irq/[n]/smp_affinity" operation.
    >
    > This is due to that fact that BAD_APICID has the same value as
    > all cpus (0xff) on 32bit kernels, and thus the value returned from
    > set_desc_affinity() via the cpu_mask_to_apicid_and() function is treated
    > as a failure in set_ioapic_affinity_irq_desc(), and no affinity changes
    > are made.

    set_desc_affinity() is already checking if the incoming cpu mask
    intersects with the cpu online mask or not. So there is no need
    for the apic op cpu_mask_to_apicid_and() to check again
    and return BAD_APICID.

    Remove the BAD_APICID return value from cpu_mask_to_apicid_and()
    and also fix set_desc_affinity() to return -1 instead of using BAD_APICID
    to represent error conditions (as cpu_mask_to_apicid_and() can return
    logical or physical apicid values and BAD_APICID is really to represent
    bad physical apic id).

    Reported-by: John Blackwood
    Root-caused-by: John Blackwood
    Signed-off-by: Suresh Siddha
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Suresh Siddha
     
  • Linus Torvalds
     
  • …/rusty/linux-2.6-for-linus

    * 'cpumask-cleanups' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
    cpumask: rename tsk_cpumask to tsk_cpus_allowed
    cpumask: don't recommend set_cpus_allowed hack in Documentation/cpu-hotplug.txt
    cpumask: avoid dereferencing struct cpumask
    cpumask: convert drivers/idle/i7300_idle.c to cpumask_var_t
    cpumask: use modern cpumask style in drivers/scsi/fcoe/fcoe.c
    cpumask: avoid deprecated function in mm/slab.c
    cpumask: use cpu_online in kernel/perf_event.c

    Linus Torvalds
     
  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
    Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture support
    NOMMU: Optimise away the {dac_,}mmap_min_addr tests
    security/min_addr.c: make init_mmap_min_addr() static
    keys: PTR_ERR return of wrong pointer in keyctl_get_security()

    Linus Torvalds
     
  • …/git/tmlind/linux-omap-2.6

    * 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
    OMAP3: serial - fix bug introduced in
    mfd: twl: fix twl4030 rename for remaining driver, board files
    USB ehci: replace mach header with plat
    omap3: Allow EHCI to be built on OMAP3

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    hwmon: (w83627hf) Fix for "No such device"
    hwmon: (sht15) Off-by-one error in array index + incorrect constants
    hwmon: Add driver for VIA CPU core temperature
    hwmon: (smsc47m1) Enable device if needed
    hwmon: (smsc47m1) Fail module loading on error
    hwmon: (smsc47m1) Only request I/O ports we really use
    hwmon: New driver for AMD Family 10h/11h CPUs

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (40 commits)
    [SCSI] 3w-9xxx fix bug in sgl loading
    [SCSI] fcoe, libfc: adds enable/disable for fcoe interface
    [SCSI] libfc: reduce hold time on SCSI host lock
    [SCSI] libfc: remote port gets stuck in restart state without really restarting
    [SCSI] pm8001: misc code cleanup
    [SCSI] pm8001: enable read HBA SAS address from VPD
    [SCSI] pm8001: do not reset local sata as it will not be found if reset
    [SCSI] pm8001: bit set pm8001_ha->flags
    [SCSI] pm8001:fix potential NULL pointer dereference
    [SCSI] pm8001: set SSC down-spreading only to get less errors on some 6G device.
    [SCSI] pm8001: fix endian issues with SAS address
    [SCSI] pm8001: enhance error handle for IO patch
    [SCSI] pm8001: Fix for sata io circular lock dependency.
    [SCSI] hpsa: add driver for HP Smart Array controllers.
    [SCSI] cxgb3i: always use negative errno in case of error
    [SCSI] bnx2i: minor code cleanup and update driver version
    [SCSI] bnx2i: Task management ABORT TASK fixes
    [SCSI] bnx2i: update CQ arming algorith for 5771x chipsets
    [SCSI] bnx2i: Adjust sq_size module parametr to power of 2 only if a non-zero value is specified
    [SCSI] bnx2i: Add 5771E device support to bnx2i driver
    ...

    Linus Torvalds
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (71 commits)
    MIPS: Lasat: Fix botched changes to sysctl code.
    RTC: rtc-cmos.c: Fix warning on MIPS
    MIPS: Cleanup random differences beween lmo and Linus' kernel.
    MIPS: No longer hardwire CONFIG_EMBEDDED to y
    MIPS: Fix and enhance built-in kernel command line
    MIPS: eXcite: Remove platform.
    MIPS: Loongson: Cleanups of serial port support
    MIPS: Lemote 2F: Suspend CS5536 MFGPT Timer
    MIPS: Excite: move iodev_remove to .devexit.text
    MIPS: Lasat: Convert to proc_fops / seq_file
    MIPS: Cleanup signal code initialization
    MIPS: Modularize COP2 handling
    MIPS: Move EARLY_PRINTK to Kconfig.debug
    MIPS: Yeeloong 2F: Cleanup reset logic using the new ec_write function
    MIPS: Yeeloong 2F: Add LID open event as the wakeup event
    MIPS: Yeeloong 2F: Add basic EC operations
    MIPS: Move several variables from .bss to .init.data
    MIPS: Tracing: Make function graph tracer work with -mmcount-ra-address
    MIPS: Tracing: Reserve $12(t0) for mcount-ra-address of gcc 4.5
    MIPS: Tracing: Make ftrace for MIPS work without -fno-omit-frame-pointer
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
    Btrfs: make sure fallocate properly starts a transaction
    Btrfs: make metadata chunks smaller
    Btrfs: Show discard option in /proc/mounts
    Btrfs: deny sys_link across subvolumes.
    Btrfs: fail mount on bad mount options
    Btrfs: don't add extent 0 to the free space cache v2
    Btrfs: Fix per root used space accounting
    Btrfs: Fix btrfs_drop_extent_cache for skip pinned case
    Btrfs: Add delayed iput
    Btrfs: Pass transaction handle to security and ACL initialization functions
    Btrfs: Make truncate(2) more ENOSPC friendly
    Btrfs: Make fallocate(2) more ENOSPC friendly
    Btrfs: Avoid orphan inodes cleanup during committing transaction
    Btrfs: Avoid orphan inodes cleanup while replaying log
    Btrfs: Fix disk_i_size update corner case
    Btrfs: Rewrite btrfs_drop_extents
    Btrfs: Add btrfs_duplicate_item
    Btrfs: Avoid superfluous tree-log writeout

    Linus Torvalds
     
  • * 'kmemleak' of git://linux-arm.org/linux-2.6:
    kmemleak: fix kconfig for crc32 build error
    kmemleak: Reduce the false positives by checking for modified objects
    kmemleak: Show the age of an unreferenced object
    kmemleak: Release the object lock before calling put_object()
    kmemleak: Scan the _ftrace_events section in modules
    kmemleak: Simplify the kmemleak_scan_area() function prototype
    kmemleak: Do not use off-slab management with SLAB_NOLEAKTRACE

    Linus Torvalds
     
  • * 'next-spi' of git://git.secretlab.ca/git/linux-2.6:
    spi: spi_txx9.c: use resource_size()
    spi: spi_sh_sci.c: use resource_size()
    spi: spi_mpc8xxx.c: use resource_size()
    spi: spi_bfin5xx.c: use resource_size()
    spi: atmel_spi.c: use resource_size()
    spi: Add s3c64xx SPI Controller driver
    atmel_spi: fix dma addr calculation for len > BUFFER_SIZE
    spi_s3c24xx: add FIQ pseudo-DMA support
    spi: controller driver for Designware SPI core
    spidev: add proper section markers
    spidev: use DECLARE_BITMAP instead of declaring the array

    Linus Torvalds
     
  • * 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight:
    backlight: mbp_nvidia_bl - add two more MacBookPro variants
    backlight: Pass device through notify callback in the pwm driver
    backlight: PTR_ERR return of wrong pointer in cr_backlight_probe()
    backlight: Constify struct backlight_ops
    backlight/thinkpad-acpi: issue backlight class events

    Fix up trivial conflicts in thinkpad-acpi support (backlight support
    already merged earlier).

    Linus Torvalds
     
  • * 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds:
    leds: leds-pwm: Set led_classdev max_brightness
    leds: leds-lp3944.h - remove unneeded includes
    leds: use default-on trigger for Cobalt Qube
    leds: drivers/leds/leds-ss4200.c: fix return statement
    leds: leds-pca9532.h- indent with tabs, not spaces
    leds: Add LED class driver for regulator driven LEDs.
    leds: leds-cobalt-qube.c: use resource_size()
    leds: leds-cobalt-raq.c - use resource_size()
    leds: Add driver for ADP5520/ADP5501 MFD PMICs
    leds: Add driver for LT3593 controlled LEDs
    leds-ss4200: Check pci_enable_device return
    leds: leds-alix2c - take port address from MSR
    leds: LED driver for Intel NAS SS4200 series (v5)

    Linus Torvalds
     
  • * 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm:
    PCMCIA: fix pxa2xx_lubbock modular build error
    [ARM] Update mach-types
    [ARM] pxa: fix no reference of cpu_is_pxa25x() in devices.c
    [ARM] pxa/cm-x300: add PWM backlight support
    revert "[ARM] pxa/cm-x300: add PWM backlight support"
    ARM: use flush_kernel_dcache_area() for dmabounce
    ARM: add size argument to __cpuc_flush_dcache_page
    ARM: 5848/1: kill flush_ioremap_region()
    ARM: cache-l2x0: make better use of background cache handling
    ARM: cache-l2x0: avoid taking spinlock for every iteration
    [ARM] Kirkwood: Add LaCie Network Space v2 support
    ARM: dove: fix the mm mmu flags of the pj4 procinfo

    Linus Torvalds
     
  • Apparently not all versions of glibc and utilities treat an empty
    LC_ALL as nonexistent, causing error messages to be garbled. Instead,
    explicitly unexport it from the environment.

    Reported-and-tested-by: Masami Hiramatsu
    Signed-off-by: H. Peter Anvin
    LKML-Reference:
    Cc: Michal Marek
    Cc: Roland Dreier
    Cc: Sam Ravnborg

    H. Peter Anvin
     
  • Fix kernel-doc warnings in printk.c:

    Warning(kernel/printk.c:1422): No description found for parameter 'dumper'
    Warning(kernel/printk.c:1422): Excess function parameter 'dump' description in 'kmsg_dump_register'
    Warning(kernel/printk.c:1451): No description found for parameter 'dumper'
    Warning(kernel/printk.c:1451): Excess function parameter 'dump' description in 'kmsg_dump_unregister'

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • I added blk_run_backing_dev on page_cache_async_readahead so readahead I/O
    is unpluged to improve throughput on especially RAID environment.

    The normal case is, if page N become uptodate at time T(N), then T(N)
    Acked-by: Wu Fengguang
    Cc: Jens Axboe
    Cc: KOSAKI Motohiro
    Tested-by: Ronald
    Cc: Bart Van Assche
    Cc: Vladislav Bolkhovitin
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hisashi Hifumi
     
  • RTC core won't allow wakeup alarms to be set if RTC devices' parent (i.e.
    i2c_client or spi_device) isn't wakeup capable.

    For I2C devices there is I2C_CLIENT_WAKE flag exists that we can pass via
    board info, and if set, I2C core will initialize wakeup capability. For
    SPI devices there is no such flag at all.

    I believe that it's not platform code responsibility to allow or disallow
    wakeups, instead, drivers themselves should set the capability if a device
    can trigger wakeups.

    That's what drivers/base/power/sysfs.c says:

    * It is the responsibility of device drivers to enable (or disable)
    * wakeup signaling as part of changing device power states, respecting
    * the policy choices provided through the driver model.

    I2C and SPI RTC devices send wakeup events via interrupt lines, so we
    should set the wakeup capability if IRQ is routed.

    Ideally we should also check irq for wakeup capability before setting
    device's capability, i.e.

    if (can_irq_wake(irq))
    device_set_wakeup_capable(&client->dev, 1);

    But there is no can_irq_wake() call exist, and it is not that trivial to
    implement it for all interrupts controllers and complex/cascaded setups.

    drivers/base/power/sysfs.c also covers these cases:

    * Devices may not be able to generate wakeup events from all power
    * states. Also, the events may be ignored in some configurations;
    * for example, they might need help from other devices that aren't
    * active

    So there is no guarantee that wakeup will actually work, and so I think
    there is no point in being pedantic wrt checking IRQ wakeup capability.

    Signed-off-by: Anton Vorontsov
    Cc: David Brownell
    Cc: Ben Dooks
    Cc: Jean Delvare
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Vorontsov
     
  • Add support for the Secure Digital Host Controller Interface found on the
    "Hollywood" chipset of the Nintendo Wii video game console.

    Signed-off-by: Albert Herranz
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Albert Herranz
     
  • This patch breaks down sdhci-of into a core portion and a eSDHC portion,
    clearing the path to easily support additional hardware using the same OF
    driver.

    Signed-off-by: Albert Herranz
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Albert Herranz
     
  • This patch renames sdhci-of.c to sdhci-of-core.c before reorganizing the
    driver to support additional hardware.

    The driver is still built as sdhci-of despite the rename of the file. No
    functional change.

    Signed-off-by: Albert Herranz
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Albert Herranz
     
  • Signed-off-by: Albert Herranz
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Albert Herranz
     
  • Daniel Drake noticed a crash in the error path of mmc_attach_sdio(). This
    bug is discussed at http://dev.laptop.org/ticket/9707.

    BUG: unable to handle kernel paging request at 6b6b6c57
    IP: [] sdio_remove_func+0x9/0x27
    Call Trace:
    [] ? mmc_sdio_remove+0x34/0x65
    [] ? mmc_attach_sdio+0x217/0x240
    [] ? mmc_rescan+0x1a2/0x20f
    [] ? worker_thread+0x156/0x1e

    We need to accurately track how many SDIO functions have been initialised
    (and keep card->sdio_funcs in sync) so that we don't try to remove more
    functions than we initialised if we hit the error path in
    mmc_attach_sdio().

    Without this patch if we hit the error path in mmc_attach_sdio() we run
    the risk of deferencing invalid memory in sdio_remove_func(), leading to a
    crash.

    Signed-off-by: Matt Fleming
    Cc: Daniel Drake
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Fleming