19 Mar, 2013

1 commit

  • Mark M. Hoffman stopped working on the Linux kernel several years
    ago, so he should no longer be listed as a driver maintainer. I'm not
    even sure if his e-mail address still works.

    I can take over 3 drivers he was responsible for, the 4th one will
    fall down to the subsystem maintainer.

    Also give Mark credit for all the good work he did.

    Signed-off-by: Jean Delvare
    Cc: "Mark M. Hoffman"
    Acked-by: Guenter Roeck
    Cc: Wolfram Sang

    Jean Delvare
     

18 Mar, 2013

4 commits

  • Linus Torvalds
     
  • Commit 1d9d8639c063 ("perf,x86: fix kernel crash with PEBS/BTS after
    suspend/resume") introduces a link failure since
    perf_restore_debug_store() is only defined for CONFIG_CPU_SUP_INTEL:

    arch/x86/power/built-in.o: In function `restore_processor_state':
    (.text+0x45c): undefined reference to `perf_restore_debug_store'

    Fix it by defining the dummy function appropriately.

    Signed-off-by: David Rientjes
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • Commit 1d9d8639c063 ("perf,x86: fix kernel crash with PEBS/BTS after
    suspend/resume") fixed a crash when doing PEBS performance profiling
    after resuming, but in using init_debug_store_on_cpu() to restore the
    DS_AREA mtrr it also resulted in a new WARN_ON() triggering.

    init_debug_store_on_cpu() uses "wrmsr_on_cpu()", which in turn uses CPU
    cross-calls to do the MSR update. Which is not really valid at the
    early resume stage, and the warning is quite reasonable. Now, it all
    happens to _work_, for the simple reason that smp_call_function_single()
    ends up just doing the call directly on the CPU when the CPU number
    matches, but we really should just do the wrmsr() directly instead.

    This duplicates the wrmsr() logic, but hopefully we can just remove the
    wrmsr_on_cpu() version eventually.

    Reported-and-tested-by: Parag Warudkar
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "Eric's rcu barrier patch fixes a long standing problem with our
    unmount code hanging on to devices in workqueue helpers. Liu Bo
    nailed down a difficult assertion for in-memory extent mappings."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: fix warning of free_extent_map
    Btrfs: fix warning when creating snapshots
    Btrfs: return as soon as possible when edquot happens
    Btrfs: return EIO if we have extent tree corruption
    btrfs: use rcu_barrier() to wait for bdev puts at unmount
    Btrfs: remove btrfs_try_spin_lock
    Btrfs: get better concurrency for snapshot-aware defrag work

    Linus Torvalds
     

16 Mar, 2013

9 commits

  • Users report that an extent map's list is still linked when it's actually
    going to be freed from cache.

    The story is that

    a) when we're going to drop an extent map and may split this large one into
    smaller ems, and if this large one is flagged as EXTENT_FLAG_LOGGING which means
    that it's on the list to be logged, then the smaller ems split from it will also
    be flagged as EXTENT_FLAG_LOGGING, and this is _not_ expected.

    b) we'll keep ems from unlinking the list and freeing when they are flagged with
    EXTENT_FLAG_LOGGING, because the log code holds one reference.

    The end result is the warning, but the truth is that we set the flag
    EXTENT_FLAG_LOGGING only during fsync.

    So clear flag EXTENT_FLAG_LOGGING for extent maps split from a large one.

    Reported-by: Johannes Hirte
    Reported-by: Darrick J. Wong
    Signed-off-by: Liu Bo
    Signed-off-by: Chris Mason

    Liu Bo
     
  • Pull kbuild fix from Michal Marek:
    "One fix for for make headers_install/headers_check to not require make
    3.81. The requirement has been accidentally introduced in 3.7."

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: fix make headers_check with make 3.80

    Linus Torvalds
     
  • Pull OpenRISC bug fixes from Jonas Bonn:

    - The GPIO descriptor work has exposed how broken the non-GPIOLIB bits
    for OpenRISC were. We now require GPIOLIB as this is the preferred
    way forward.

    - The system.h split introduced a bug in llist.h for arches using
    asm-generic/cmpxchg.h directly, which is currently only OpenRISC.
    The patch here moves two defines from asm-generic/atomic.h to
    asm-generic/cmpxchg.h to make things work as they should.

    - The VIRT_TO_BUS selector was added for OpenRISC, but OpenRISC does
    not have the virt_to_bus methods, so there's a patch to remove it
    again.

    * tag 'for-3.9-rc3' of git://openrisc.net/jonas/linux:
    openrisc: remove HAVE_VIRT_TO_BUS
    asm-generic: move cmpxchg*_local defs to cmpxchg.h
    openrisc: require gpiolib

    Linus Torvalds
     
  • Pull char/misc fixes from Greg Kroah-Hartman:
    "Here are some tiny fixes for the w1 drivers and the final removal
    patch for getting rid of CONFIG_EXPERIMENTAL (all users of it are now
    gone from your tree, this just drops the Kconfig item itself.)

    All have been in the linux-next tree for a while"

    * tag 'char-misc-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    final removal of CONFIG_EXPERIMENTAL
    w1: fix oops when w1_search is called from netlink connector
    w1-gpio: fix unused variable warning
    w1-gpio: remove erroneous __exit and __exit_p()
    ARM: w1-gpio: fix erroneous gpio requests

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "A collection of small fixes, as expected for the middle rc:
    - A couple of fixes for potential NULL dereferences and out-of-range
    array accesses revealed by static code parsers
    - A fix for the wrong error handling detected by trinity
    - A regression fix for missing audio on some MacBooks
    - CA0132 DSP loader fixes
    - Fix for EAPD control of IDT codecs on machines w/o speaker
    - Fix a regression in the HD-audio widget list parser code
    - Workaround for the NuForce UDH-100 USB audio"

    * tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda - Fix missing EAPD/GPIO setup for Cirrus codecs
    sound: sequencer: cap array index in seq_chn_common_event()
    ALSA: hda/ca0132 - Remove extra setting of dsp_state.
    ALSA: hda/ca0132 - Check download state of DSP.
    ALSA: hda/ca0132 - Check if dspload_image succeeded.
    ALSA: hda - Disable IDT eapd_switch if there are no internal speakers
    ALSA: hda - Fix snd_hda_get_num_raw_conns() to return a correct value
    ALSA: usb-audio: add a workaround for the NuForce UDH-100
    ALSA: asihpi - fix potential NULL pointer dereference
    ALSA: seq: Fix missing error handling in snd_seq_timer_open()

    Linus Torvalds
     
  • Pull DMA-mapping fix from Marek Szyprowski:
    "An important fix for all ARM architectures which use ZONE_DMA.
    Without it dma_alloc_* calls with GFP_ATOMIC flag might have allocated
    buffers outsize DMA zone."

    * 'fixes-for-3.9' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
    ARM: DMA-mapping: add missing GFP_DMA flag for atomic buffer allocation

    Linus Torvalds
     
  • Pull MFD fixes from Samuel Ortiz:
    "This is the first batch of MFD fixes for 3.9.

    With this one we have:

    - An ab8500 build failure fix.
    - An ab8500 device tree parsing fix.
    - A fix for twl4030_madc remove routine to work properly (when
    built-in).
    - A fix for properly registering palmas interrupt handler.
    - A fix for omap-usb init routine to actually write into the
    hostconfig register.
    - A couple of warning fixes for ab8500-gpadc and tps65912"

    * tag 'mfd-fixes-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-fixes:
    mfd: twl4030-madc: Remove __exit_p annotation
    mfd: ab8500: Kill "reg" property from binding
    mfd: ab8500-gpadc: Complain if we fail to enable vtvout LDO
    mfd: wm831x: Don't forward declare enum wm831x_auxadc
    mfd: twl4030-audio: Fix argument type for twl4030_audio_disable_resource()
    mfd: tps65912: Declare and use tps65912_irq_exit()
    mfd: palmas: Provide irq flags through DT/platform data
    mfd: Make AB8500_CORE select POWER_SUPPLY to fix build error
    mfd: omap-usb-host: Actually update hostconfig

    Linus Torvalds
     
  • Pull hwmon fixes from Guenter Roeck:
    "Bug fixes for pmbus, ltc2978, and lineage-pem drivers

    Added specific maintainer for some hwmon drivers"

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (pmbus/ltc2978) Fix temperature reporting
    hwmon: (pmbus) Fix krealloc() misuse in pmbus_add_attribute()
    hwmon: (lineage-pem) Add missing terminating entry for pem_[input|fan]_attributes
    MAINTAINERS: Add maintainer for MAX6697, INA209, and INA2XX drivers

    Linus Torvalds
     
  • This patch fixes a kernel crash when using precise sampling (PEBS)
    after a suspend/resume. Turns out the CPU notifier code is not invoked
    on CPU0 (BP). Therefore, the DS_AREA (used by PEBS) is not restored properly
    by the kernel and keeps it power-on/resume value of 0 causing any PEBS
    measurement to crash when running on CPU0.

    The workaround is to add a hook in the actual resume code to restore
    the DS Area MSR value. It is invoked for all CPUS. So for all but CPU0,
    the DS_AREA will be restored twice but this is harmless.

    Reported-by: Linus Torvalds
    Signed-off-by: Stephane Eranian
    Signed-off-by: Linus Torvalds

    Stephane Eranian
     

15 Mar, 2013

17 commits

  • During the transition to the generic parser, the hook to the codec
    specific automute function was forgotten. This resulted in the silent
    output on some MacBooks.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • "chn" here is a number between 0 and 255, but ->chn_info[] only has
    16 elements so there is a potential write beyond the end of the
    array.

    If the seq_mode isn't SEQ_2 then we let the individual drivers
    (either opl3.c or midi_synth.c) handle it. Those functions all
    do a bounds check on "chn" so I haven't changed anything here.
    The opl3.c driver has up to 18 channels and not 16.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Takashi Iwai

    Dan Carpenter
     
  • 4740f73fe5 "mfd: remove use of __devexit" removed the __devexit annotation
    on the twl4030_madc_remove function, but left an __exit_p() present on the
    pointer to this function. Using __exit_p was as wrong with the devexit in
    place as it is now, but now we get a gcc warning about an unused function.

    In order for the twl4030_madc_remove to work correctly in built-in code, we
    have to remove the __exit_p.

    Cc: Bill Pemberton
    Cc: Greg Kroah-Hartman
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Samuel Ortiz

    Arnd Bergmann
     
  • spec->dsp_state is initialized to DSP_DOWNLOAD_INIT, no need to reset
    and check it in ca0132_download_dsp().

    Signed-off-by: Dylan Reid
    Signed-off-by: Takashi Iwai

    Dylan Reid
     
  • Instead of using the dspload_is_loaded() function, check the dsp_state
    that is kept in the spec. The dspload_is_loaded() function returns
    true if the DSP transfer was never started. This false-positive leads
    to multiple second delays when ca0132_setup_efaults() times out on
    each write.

    Signed-off-by: Dylan Reid
    Signed-off-by: Takashi Iwai

    Dylan Reid
     
  • If dspload_image() fails, it was ignored and dspload_wait_loaded() was
    still called. dsp_loaded should never be set to true in this case,
    skip it. The check in dspload_wait_loaded() return true if the DSP is
    loaded or if it never started.

    Signed-off-by: Dylan Reid
    Signed-off-by: Takashi Iwai

    Dylan Reid
     
  • The vm_flags introduced in 6d7825b10dbe ("mm/fremap.c: fix oops on error
    path") is supposed to avoid a compiler warning about unitialized
    vm_flags without changing the generated code.

    However I am concerned that this is going to be very brittle, and fail
    with some compiler versions. The failure could be either of:

    - compiler could actually load vma->vm_flags before checking for the
    !vma condition, thus reintroducing the oops

    - compiler could optimize out the !vma check, since the pointer just got
    dereferenced shortly before (so the compiler knows it can't be NULL!)

    I propose reversing this part of the change and initializing vm_flags to 0
    just to avoid the bogus uninitialized use warning.

    Signed-off-by: Michel Lespinasse
    Cc: Tommi Rantala
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Pull fix for hlist_entry_safe() regression from Paul McKenney:
    "This contains a single commit that fixes a regression in
    hlist_entry_safe(). This macro references its argument twice, which
    can cause NULL-pointer errors. This commit applies a gcc statement
    expression, creating a temporary variable to avoid the double
    reference. This has been posted to LKML at

    https://lkml.org/lkml/2013/3/9/75.

    Kudos to CAI Qian, whose testing uncovered this, to Eric Dumazet, who
    spotted root cause, and to Li Zefan, who tested this commit."

    * 'rcu/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
    list: Fix double fetch of pointer in hlist_entry_safe()

    Linus Torvalds
     
  • The current version of hlist_entry_safe() fetches the pointer twice,
    once to test for NULL and the other to compute the offset back to the
    enclosing structure. This is OK for normal lock-based use because in
    that case, the pointer cannot change. However, when the pointer is
    protected by RCU (as in "rcu_dereference(p)"), then the pointer can
    change at any time. This use case can result in the following sequence
    of events:

    1. CPU 0 invokes hlist_entry_safe(), fetches the RCU-protected
    pointer as sees that it is non-NULL.

    2. CPU 1 invokes hlist_del_rcu(), deleting the entry that CPU 0
    just fetched a pointer to. Because this is the last entry
    in the list, the pointer fetched by CPU 0 is now NULL.

    3. CPU 0 refetches the pointer, obtains NULL, and then gets a
    NULL-pointer crash.

    This commit therefore applies gcc's "({ })" statement expression to
    create a temporary variable so that the specified pointer is fetched
    only once, avoiding the above sequence of events. Please note that
    it is the caller's responsibility to use rcu_dereference() as needed.
    This allows RCU-protected uses to work correctly without imposing
    any additional overhead on the non-RCU case.

    Many thanks to Eric Dumazet for spotting root cause!

    Reported-by: CAI Qian
    Reported-by: Eric Dumazet
    Signed-off-by: Paul E. McKenney
    Tested-by: Li Zefan

    Paul E. McKenney
     
  • Pull ext2, ext3, reiserfs, quota fixes from Jan Kara:
    "A fix for regression in ext2, and a format string issue in ext3. The
    rest isn't too serious."

    * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
    ext2: Fix BUG_ON in evict() on inode deletion
    reiserfs: Use kstrdup instead of kmalloc/strcpy
    ext3: Fix format string issues
    quota: add missing use of dq_data_lock in __dquot_initialize

    Linus Torvalds
     
  • Creating snapshot passes extent_root to commit its transaction,
    but it can lead to the warning of checking root for quota in
    the __btrfs_end_transaction() when someone else is committing
    the current transaction. Since we've recorded the needed root
    in trans_handle, just use it to get rid of the warning.

    Signed-off-by: Liu Bo
    Signed-off-by: Chris Mason

    Liu Bo
     
  • If one of qgroup fails to reserve firstly, we should return immediately,
    it is unnecessary to continue check.

    Signed-off-by: Wang Shilong
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Wang Shilong
     
  • The callers of lookup_inline_extent_info all handle getting an error back
    properly, so return an error if we have corruption instead of being a jerk and
    panicing. Still WARN_ON() since this is kind of crucial and I've been seeing it
    a bit too much recently for my taste, I think we're doing something wrong
    somewhere. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • Doing this would reliably fail with -EBUSY for me:

    # mount /dev/sdb2 /mnt/scratch; umount /mnt/scratch; mkfs.btrfs -f /dev/sdb2
    ...
    unable to open /dev/sdb2: Device or resource busy

    because mkfs.btrfs tries to open the device O_EXCL, and somebody still has it.

    Using systemtap to track bdev gets & puts shows a kworker thread doing a
    blkdev put after mkfs attempts a get; this is left over from the unmount
    path:

    btrfs_close_devices
    __btrfs_close_devices
    call_rcu(&device->rcu, free_device);
    free_device
    INIT_WORK(&device->rcu_work, __free_device);
    schedule_work(&device->rcu_work);

    so unmount might complete before __free_device fires & does its blkdev_put.

    Adding an rcu_barrier() to btrfs_close_devices() causes unmount to wait
    until all blkdev_put()s are done, and the device is truly free once
    unmount completes.

    Cc: stable@vger.kernel.org
    Signed-off-by: Eric Sandeen
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Eric Sandeen
     
  • Remove a useless function declaration

    Signed-off-by: Liu Bo
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Liu Bo
     
  • Using spinning case instead of blocking will result in better concurrency
    overall.

    Signed-off-by: Liu Bo
    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Liu Bo
     
  • On LTC2978, only READ_TEMPERATURE is supported. It reports
    the internal junction temperature. This register is unpaged.

    On LTC3880, READ_TEMPERATURE and READ_TEMPERATURE2 are supported.
    READ_TEMPERATURE is paged and reports external temperatures.
    READ_TEMPERATURE2 is unpaged and reports the internal junction
    temperature.

    Signed-off-by: Guenter Roeck
    Cc: stable@vger.kernel.org # 3.2+
    Acked-by: Jean Delvare

    Guenter Roeck
     

14 Mar, 2013

9 commits

  • If there are no internal speakers, we should not turn the eapd switch
    off, because it might be necessary to keep high for Headphone.

    BugLink: https://bugs.launchpad.net/bugs/1155016
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     
  • If krealloc() returns NULL, it *doesn't* free the original. So any code
    of the form 'foo = krealloc(foo, …);' is almost certainly a bug.

    Signed-off-by: David Woodhouse
    Signed-off-by: Guenter Roeck

    David Woodhouse
     
  • Signed-off-by: Axel Lin
    Cc: stable@vger.kernel.org
    Acked-by: Jean Delvare
    Signed-off-by: Guenter Roeck

    Axel Lin
     
  • Atomic pool should always be allocated from DMA zone if such zone is
    available in the system to avoid issues caused by limited dma mask of
    any of the devices used for making an atomic allocation.

    Reported-by: Krzysztof Halasa
    Signed-off-by: Marek Szyprowski
    Cc: Stable [v3.6+]

    Marek Szyprowski
     
  • Pull namespace bugfixes from Eric Biederman:
    "This tree includes a partial revert for "fs: Limit sys_mount to only
    request filesystem modules." When I added the new style module aliases
    to the filesystems I deleted the old ones. A bad move. It turns out
    that distributions like Arch linux use module aliases when
    constructing ramdisks. Which meant ultimately that an ext3 filesystem
    mounted with ext4 would not result in the ext4 module being put into
    the ramdisk.

    The other change in this tree adds a handful of filesystem module
    alias I simply failed to add the first time. Which inconvinienced a
    few folks using cifs.

    I don't want to inconvinience folks any longer than I have to so here
    are these trivial fixes."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
    fs: Readd the fs module aliases.
    fs: Limit sys_mount to only request filesystem modules. (Part 3)

    Linus Torvalds
     
  • Merge misc fixes from Andrew Morton:

    - A bunch of fixes

    - Finish off the idr API conversions before someone starts to use the
    old interfaces again.

    * emailed patches from Andrew Morton :
    idr: idr_alloc() shouldn't trigger lowmem warning when preloaded
    UAPI: fix endianness conditionals in M32R's asm/stat.h
    UAPI: fix endianness conditionals in linux/raid/md_p.h
    UAPI: fix endianness conditionals in linux/acct.h
    UAPI: fix endianness conditionals in linux/aio_abi.h
    decompressors: fix typo "POWERPC"
    mm/fremap.c: fix oops on error path
    idr: deprecate idr_pre_get() and idr_get_new[_above]()
    tidspbridge: convert to idr_alloc()
    zcache: convert to idr_alloc()
    mlx4: remove leftover idr_pre_get() call
    workqueue: convert to idr_alloc()
    nfsd: convert to idr_alloc()
    nfsd: remove unused get_new_stid()
    kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER
    signal: always clear sa_restorer on execve
    mm: remove_memory(): fix end_pfn setting
    include/linux/res_counter.h needs errno.h

    Linus Torvalds
     
  • GFP_NOIO is often used for idr_alloc() inside preloaded section as the
    allocation mask doesn't really matter. If the idr tree needs to be
    expanded, idr_alloc() first tries to allocate using the specified
    allocation mask and if it fails falls back to the preloaded buffer. This
    order prevent non-preloading idr_alloc() users from taking advantage of
    preloading ones by using preload buffer without filling it shifting the
    burden of allocation to the preload users.

    Unfortunately, this allowed/expected-to-fail kmem_cache allocation ends up
    generating spurious slab lowmem warning before succeeding the request from
    the preload buffer.

    This patch makes idr_layer_alloc() add __GFP_NOWARN to the first
    kmem_cache attempt and try kmem_cache again w/o __GFP_NOWARN after
    allocation from preload_buffer fails so that lowmem warning is generated
    if not suppressed by the original @gfp_mask.

    Signed-off-by: Tejun Heo
    Reported-by: David Teigland
    Tested-by: David Teigland
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • In the UAPI header files, __BIG_ENDIAN and __LITTLE_ENDIAN must be
    compared against __BYTE_ORDER in preprocessor conditionals where these are
    exposed to userspace (that is they're not inside __KERNEL__ conditionals).

    However, in the main kernel the norm is to check for
    "defined(__XXX_ENDIAN)" rather than comparing against __BYTE_ORDER and
    this has incorrectly leaked into the userspace headers.

    The definition of struct stat64 in M32R's asm/stat.h is wrong in this way.
    Note that userspace will likely interpret the field order incorrectly as
    the big-endian variant on little-endian machines - depending on header
    inclusion order.

    [!!!] NOTE [!!!] This patch may adversely change the userspace API. It might
    be better to fix the ordering of st_blocks and __pad4 in struct stat64.

    Signed-off-by: David Howells
    Cc: Hirokazu Takata
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • In the UAPI header files, __BIG_ENDIAN and __LITTLE_ENDIAN must be
    compared against __BYTE_ORDER in preprocessor conditionals where these are
    exposed to userspace (that is they're not inside __KERNEL__ conditionals).

    However, in the main kernel the norm is to check for
    "defined(__XXX_ENDIAN)" rather than comparing against __BYTE_ORDER and
    this has incorrectly leaked into the userspace headers.

    The definition of struct mdp_superblock_s in linux/raid/md_p.h is wrong in
    this way. Note that userspace will likely interpret the ordering of the
    fields incorrectly as the big-endian variant on a little-endian machines -
    depending on header inclusion order.

    [!!!] NOTE [!!!] This patch may adversely change the userspace API. It might
    be better to fix the ordering of events_hi, events_lo, cp_events_hi and
    cp_events_lo in struct mdp_superblock_s / typedef mdp_super_t.

    Signed-off-by: David Howells
    Acked-by: NeilBrown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells