Skip to content
  1. Dec 03, 2009
  2. Dec 02, 2009
    • Daniel Mack's avatar
      [ARM] pxamci: call mmc_remove_host() before freeing resources · 5d6b1edf
      Daniel Mack authored
      
      
      mmc_remove_host() will cause the mmc core to switch off the bus power by
      eventually calling pxamci_set_ios(). This function uses the regulator or
      the GPIO which have been freed already.
      
      This causes the following Oops on module unload.
      
      [   49.519649] Unable to handle kernel paging request at virtual address 30303a70
      [   49.526878] pgd = c7084000
      [   49.529563] [30303a70] *pgd=00000000
      [   49.533136] Internal error: Oops: 5 [#1]
      [   49.537025] last sysfs file: /sys/devices/platform/pxa27x-ohci/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_level
      [   49.547471] Modules linked in: pxamci(-) eeti_ts
      [   49.552061] CPU: 0    Not tainted  (2.6.32-rc8 #322)
      [   49.557001] PC is at regulator_is_enabled+0x3c/0xbc
      [   49.561846] LR is at regulator_is_enabled+0x30/0xbc
      [   49.566691] pc : [<c01a2448>]    lr : [<c01a243c>]    psr: 60000013
      [   49.566702] sp : c7083e70  ip : 30303a30  fp : 00000000
      [   49.578093] r10: c705e200  r9 : c7082000  r8 : c705e2e0
      [   49.583280] r7 : c7061340  r6 : c7061340  r5 : c7083e70  r4 : 00000000
      [   49.589759] r3 : c04dc434  r2 : c04dc434  r1 : c03eecea  r0 : 00000047
      [   49.596241] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [   49.603329] Control: 0000397f  Table: a7084018  DAC: 00000015
      [   49.609031] Process rmmod (pid: 1101, stack limit = 0xc7082278)
      [   49.614908] Stack: (0xc7083e70 to 0xc7084000)
      [   49.619238] 3e60:                                     c7082000 c703c4f8 c705ea00 c04f4074
      [   49.627366] 3e80: 00000000 c705e3a0 ffffffff c0247ddc c70361a0 00000000 c705e3a0 ffffffff
      [   49.635499] 3ea0: c705e200 bf006400 c78c4f00 c705e200 c705e3a0 ffffffff c705e200 ffffffff
      [   49.643633] 3ec0: c04d8ac8 c02476d0 ffffffff c0247c60 c705e200 c0248678 c705e200 c0249064
      [   49.651765] 3ee0: ffffffff bf006204 c04d8ad0 c04d8ad0 c04d8ac8 bf007490 00000880 c00440c4
      [   49.659898] 3f00: 0000b748 c01c5708 bf007490 c01c44c8 c04d8ac8 c04d8afc bf007490 c01c4570
      [   49.668031] 3f20: bf007490 bf00750c c04f4258 c01c37a4 00000000 bf00750c c7083f44 c007b014
      [   49.676162] 3f40: 4000d000 6d617870 08006963 00000001 00000000 c7085000 00000001 00000000
      [   49.684287] 3f60: 4000d000 c7083f8c 00000001 bea01a54 00005401 c7ab1400 c00440c4 00082000
      [   49.692420] 3f80: bf00750c 00000880 c7083f8c 00000000 4000cfa8 00000000 00000880 bea01cc8
      [   49.700552] 3fa0: 00000081 c0043f40 00000000 00000880 bea01cc8 00000880 00000006 00000000
      [   49.708677] 3fc0: 00000000 00000880 bea01cc8 00000081 00000097 0000cca4 0000b748 00000000
      [   49.716802] 3fe0: 4001a4f0 bea01cc0 00018bf4 4001a4fc 20000010 bea01cc8 a063e021 a063e421
      [   49.724958] [<c01a2448>] (regulator_is_enabled+0x3c/0xbc) from [<c0247ddc>] (mmc_regulator_set_ocr+0x14/0xd8)
      [   49.734836] [<c0247ddc>] (mmc_regulator_set_ocr+0x14/0xd8) from [<bf006400>] (pxamci_set_ios+0xd8/0x17c [pxamci])
      [   49.745044] [<bf006400>] (pxamci_set_ios+0xd8/0x17c [pxamci]) from [<c02476d0>] (mmc_power_off+0x50/0x58)
      [   49.754555] [<c02476d0>] (mmc_power_off+0x50/0x58) from [<c0247c60>] (mmc_detach_bus+0x68/0xc4)
      [   49.763207] [<c0247c60>] (mmc_detach_bus+0x68/0xc4) from [<c0248678>] (mmc_stop_host+0xd4/0x1bc)
      [   49.771944] [<c0248678>] (mmc_stop_host+0xd4/0x1bc) from [<c0249064>] (mmc_remove_host+0xc/0x20)
      [   49.780681] [<c0249064>] (mmc_remove_host+0xc/0x20) from [<bf006204>] (pxamci_remove+0xc8/0x174 [pxamci])
      [   49.790211] [<bf006204>] (pxamci_remove+0xc8/0x174 [pxamci]) from [<c01c5708>] (platform_drv_remove+0x1c/0x24)
      [   49.800164] [<c01c5708>] (platform_drv_remove+0x1c/0x24) from [<c01c44c8>] (__device_release_driver+0x7c/0xc4)
      [   49.810110] [<c01c44c8>] (__device_release_driver+0x7c/0xc4) from [<c01c4570>] (driver_detach+0x60/0x8c)
      [   49.819535] [<c01c4570>] (driver_detach+0x60/0x8c) from [<c01c37a4>] (bus_remove_driver+0x90/0xcc)
      [   49.828452] [<c01c37a4>] (bus_remove_driver+0x90/0xcc) from [<c007b014>] (sys_delete_module+0x1d8/0x254)
      [   49.837891] [<c007b014>] (sys_delete_module+0x1d8/0x254) from [<c0043f40>] (ret_fast_syscall+0x0/0x28)
      [   49.847145] Code: eb06c53a e596c030 e1a0500d e59f106c (e59c0040)
      [   49.853566] ---[ end trace b5fa66a00cea142f ]---
      
      Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
      Reported-by: default avatarSven Neumann <s.neumann@raumfeld.com>
      Cc: Pierre Ossman <pierre@ossman.eu>
      Cc: linux-mmc@vger.kernel.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: stable@kernel.org
      Signed-off-by: default avatarEric Miao <eric.y.miao@gmail.com>
      5d6b1edf
    • Florian Fainelli's avatar
      [PATCH] rc32434_wdt: fix compilation failure · 810a90ae
      Florian Fainelli authored
      
      
      This patch fixes the compilation failure of
      rc32434 due to a bad module parameter description.
      
      Signed-off-by: default avatarFlorian Fainelli <florian@openwrt.org>
      Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
      810a90ae
    • H Hartley Sweeten's avatar
      [WATCHDOG] rc32434_wdt.c: use resource_size() · be088b13
      H Hartley Sweeten authored
      
      
      The size value passed to ioremap_nocache() is not correct.
      Use resource_size() to get the correct value.
      
      Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
      Cc: Phil Sutter <n0-1@freewrt.org>
      Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
      be088b13
    • Randy Dunlap's avatar
      sysfs: fix SYSFS_DEPRECATED_V2 prompt · e9438e31
      Randy Dunlap authored
      
      
      The SYSFS_DEPRECATED_V2 says "remove" older, deprecated features, but it
      actually enables them, so correct this confusing, backwards text.
      
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e9438e31
    • Johannes Weiner's avatar
      rtc-x1205: reset clock to sane state after power failure · cb8799ee
      Johannes Weiner authored
      
      
      When detecting power failure, the probe function would reset the clock
      time to defined state.
      
      However, the clock's _date_ might still be bogus and a subsequent probe
      fails when sanity-checking these values.
      
      Change the power-failure fixup code to do a full setting of rtc_time,
      including a valid date.
      
      Signed-off-by: default avatarJohannes Weiner <jw@emlix.com>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Cc: Paul Gortmaker <p_gortmaker@yahoo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      cb8799ee
    • Johannes Weiner's avatar
      rtc-x1205: fix rtc_time to y2k register value conversion · 48a7f774
      Johannes Weiner authored
      
      
      The possible CCR_Y2K register values are 19 or 20 and struct rtc_time's
      tm_year is in years since 1900.
      
      The function translating rtc_time to register values assumes tm_year to be
      years since first christmas, though, and we end up storing 0 or 1 in the
      CCR_Y2K register, which the hardware does not refuse to do.
      
      A subsequent probing of the clock fails due to the invalid value range in
      the register, though.
      
      [ And if it didn't, reading the clock would yield a bogus year because
        the function translating registers to tm_year is assuming a register
        value of 19 or 20. ]
      
      This fixes the conversion from years since 1900 in tm_year to the
      corresponding CCR_Y2K value of 19 or 20.
      
      Signed-off-by: default avatarJohannes Weiner <jw@emlix.com>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Cc: Paul Gortmaker <p_gortmaker@yahoo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      48a7f774
    • Peter Horton's avatar
      aoe: prevent cache aliases · 0a1f127a
      Peter Horton authored
      
      
      Prevent the AoE block driver from creating cache aliases of page cache
      pages on machines with virtually indexed caches.
      
      Building kernels on an AT91SAM9G20 board without this patch fails with
      segmentation faults after a couple of passes.
      
      Signed-off-by: default avatarPeter Horton <zero@colonel-panic.org>
      Cc: "Ed L. Cashin" <ecashin@coraid.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0a1f127a
    • Alek Du's avatar
      gpio: Langwell GPIO driver bugfixes · ca029701
      Alek Du authored
      
      
      - Remove wrong and unnecessary unmask operation
      
      - Remove extra GEDR reading
      
      This fixes the loss of interrupts which occurs when two or more pins are
      triggered in close succession.
      
      Signed-off-by: default avatarAlek Du <alek.du@intel.com>
      Cc: David Brownell <david-b@pacbell.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ca029701
    • Sam Ravnborg's avatar
      kbuild: stepping down as maintainer · 97434843
      Sam Ravnborg authored
      
      
      It has been fun but the last year or more it has been a duty and a burden.
      So I leave it open for others to take over.
      
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Anibal Monsalve Salazar <anibal@debian.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      97434843
    • Sudhakar Rajashekhara's avatar
      davinci: fb: fix frame buffer driver issues · 3510b8f7
      Sudhakar Rajashekhara authored
      
      
      Following issues have been addressed on DA8XX/OMAP-L1XX:
      
      a. Screen misalignment during booting when frame buffer console is
         enabled.
      
      b. Driver was configured always in PSEUDOCOLOR mode.  This patch
         dynamically configures the driver either in PSEUDOCOLOUR or TRUECOLOR
         mode depending on bpp.
      
      c. The RED and BLUE offsets were interchanged resulting in wrong
         bootup logo colour.
      
      This patch has been tested on DA830/OMAP-L137 and DA850/OMAP-L138 EVMs.
      
      Signed-off-by: default avatarSudhakar Rajashekhara <sudhakar.raj@ti.com>
      Cc: Steve Chen <schen@mvista.com>
      Cc: Pavel Kiryukhin <pkiryukhin@ru.mvista.com>
      Cc: Krzysztof Helt <krzysztof.h1@wp.pl>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3510b8f7
    • Dan Carpenter's avatar
      drivers/rtc/rtc-pcf50633.c: fix use after free in pcf50633_rtc_probe() · fa00e106
      Dan Carpenter authored
      
      
      "rtc" is freed and then dereferenced on the next line.  This patch fixes
      that.
      
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Acked-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Paul Gortmaker <p_gortmaker@yahoo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fa00e106
    • Andrew Morton's avatar
      drivers/media/dvb/dvb-core/dvb_frontend.c: needs semaphore.h · 4c4cb1b1
      Andrew Morton authored
      
      
      Fixes:
      
        v4l/dvb_frontend.c: In function 'dvb_frontend_stop':
        v4l/dvb_frontend.c:707: error: implicit declaration of function 'init_MUTEX'
      
      Addresses http://bugzilla.kernel.org/show_bug.cgi?id=14609
      
      Reported-by: default avatar <tstrelar@gmail.com>
      Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4c4cb1b1
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 · 21278163
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6:
        Staging: update TODO files
        Staging: hv: Fix some missing author names
        Staging: hv: Fix vmbus event handler bug
        Staging: hv: Fix argument order in incorrect memset invocations in hyperv driver.
      21278163
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 · e272a186
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
        USB: Add support for Mobilcom Debitel USB UMTS Surf-Stick to option driver
        USB: work around for EHCI with quirky periodic schedules
        USB: musb: Fix CPPI IRQs not being signaled
        USB: musb: respect usb_request->zero in control requests
        USB: musb: fix ISOC Tx programming for CPPI DMAs
        USB: musb: Remove unwanted message in boot log
        usb: amd5536udc: fixed shared interrupt bug and warning oops
        USB: ftdi_sio: Keep going when write errors are encountered.
        USB: musb_gadget: fix STALL handling
        USB: EHCI: don't send Clear-TT-Buffer following a STALL
      e272a186
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 · e8ed34ce
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
        tty/of_serial: add missing ns16550a id
        bcm63xx_uart: Fix serial driver compile breakage.
        tty_port: handle the nonblocking open of a dead port corner case
      e8ed34ce
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus · 0d9ccfe1
      Linus Torvalds authored
      * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
        MIPS: Loongson: Switch from flatmem to sparsemem
        MIPS: Loongson: Disallow 4kB pages
        MIPS: Add missing definition for MADV_HWPOISON.
        MIPS: Fix build error if __xchg() is not getting inlined.
        MIPS: IP22/IP28 Disable early printk to fix boot problems on some systems.
      0d9ccfe1
    • Wu Zhangjin's avatar
      MIPS: Loongson: Switch from flatmem to sparsemem · f133f22d
      Wu Zhangjin authored
      
      
      With flatmem hibernation for Loongson will fail, and there are also some
      other problems such as broken files when using NFS or CIFS / Samba.
      
      The config help of sparsemem says:
      
      "This option provides some potential performance benefits, along with
      decreased code complexity."
      
      So to avoid the potential problems of FLATMEM, we disable FLATMEM directly
      and use SPARSEMEM instead.
      
      Related email thread:
      
      http://groups.google.com/group/loongson-dev/browse_thread/thread/b6b65890ec2b0f24/feb43e5aa7f55d9b?show_docid=feb43e5aa7f55d9b
      
      Reported-by: default avatarTatu Kilappa <tatu.kilappa@gmail.com>
      Signed-off-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
      Patchwork: http://patchwork.linux-mips.org/patch/737/
      Cc: linux-mips@linux-mips.org
      Cc: zhangfx@lemote.com
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      f133f22d
    • Wu Zhangjin's avatar
      MIPS: Loongson: Disallow 4kB pages · 315fe625
      Wu Zhangjin authored
      
      
      Currently, with PAGE_SIZE_4KB, the kernel for loongson will hang on:
      
      Kernel panic - not syncing: Attempted to kill init!
      
      The possible reason is the cache aliases problem:
      
      Loongson 2F has 64kb, 4 way L1 Cache, the way size is 16kb, which is bigger
      then 4kb. so, If using 4kb page size, there is cache aliases problem.
      To avoid this kind of problem, extra cache flushing.  The 2nd possible
      solution is 16kb page size which avoids cache aliases without the need for
      extra cache flushes.  So we disable 4kB pages until the aliasing issue is
      solved.
      
      Signed-off-by: default avatarWu Zhangjin <wuzhangjin@gmail.com>
      Patchwork: http://patchwork.linux-mips.org/patch/736/
      Cc: linux-mips@linux-mips.org
      Cc: zhangfx@lemote.com
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      315fe625
    • Ralf Baechle's avatar
      MIPS: Add missing definition for MADV_HWPOISON. · e1eb3a98
      Ralf Baechle authored
      
      
      Thanks to Joseph S. Myers for reporting this.
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Cc: "Joseph S. Myers" <joseph@codesourcery.com>
      Patchwork: http://patchwork.linux-mips.org/patch/723/
      e1eb3a98
    • Ralf Baechle's avatar
      MIPS: Fix build error if __xchg() is not getting inlined. · c677189a
      Ralf Baechle authored
      
      
      If __xchg() is not getting inlined the outline version of the function
      will have a reference to __xchg_called_with_bad_pointer() which does not
      exist remaining.  Fixed by using BUILD_BUG_ON() to check for allowable
      operand sizes.
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Patchwork: http://patchwork.linux-mips.org/patch/705/
      c677189a
    • Martin Michlmayr's avatar
      MIPS: IP22/IP28 Disable early printk to fix boot problems on some systems. · 2b5e63f6
      Martin Michlmayr authored
      
      
      Some Debian users have reported that the kernel hangs early during boot on
      some IP22 systems.  Thomas Bogendoerfer found that this is due to a "bad
      interaction between CONFIG_EARLY_PRINTK and overwritten prom memory during
      early boot".  Since there's no fix yet, disable CONFIG_EARLY_PRINTK for now.
      
      Signed-off-by: default avatarMartin Michlmayr <tbm@cyrius.com>
      Cc: linux-mips@linux-mips.org
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Dmitri Vorobiev <dmitri.vorobiev@gmail.com>
      Patchwork: http://patchwork.linux-mips.org/patch/702/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      2b5e63f6
    • David Howells's avatar
      SLOW_WORK: Move slow_work's proc file to debugfs · f13a48bd
      David Howells authored
      
      
      Move slow_work's debugging proc file to debugfs.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Requested-and-acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f13a48bd
  3. Dec 01, 2009
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha-2.6 · df87f8c0
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha-2.6:
        alpha: Fixup last users of irq_chip->typename
        Alpha: Rearrange thread info flags fixing two regressions
        arch/alpha/kernel: Add kmalloc NULL tests
        arch/alpha/kernel/sys_ruffian.c: Use DIV_ROUND_CLOSEST
      df87f8c0
    • Marc Dionne's avatar
      CacheFiles: Update IMA counters when using dentry_open · 3350b2ac
      Marc Dionne authored
      
      
      When IMA is active, using dentry_open without updating the
      IMA counters will result in free/open imbalance errors when
      fput is eventually called.
      
      Signed-off-by: default avatarMarc Dionne <marc.c.dionne@gmail.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3350b2ac
    • David Howells's avatar
      SLOW_WORK: Fix the CONFIG_MODULES=n case · fa1dae49
      David Howells authored
      Commits 3d7a641e ("SLOW_WORK: Wait for outstanding work items belonging to a
      module to clear") introduced some code to make sure that all of a module's
      slow-work items were complete before that module was removed, and commit
      3bde31a4
      
       ("SLOW_WORK: Allow a requeueable work item to sleep till the thread is
      needed") further extended that, breaking it in the process if CONFIG_MODULES=n:
      
          CC      kernel/slow-work.o
        kernel/slow-work.c: In function 'slow_work_execute':
        kernel/slow-work.c:313: error: 'slow_work_thread_processing' undeclared (first use in this function)
        kernel/slow-work.c:313: error: (Each undeclared identifier is reported only once
        kernel/slow-work.c:313: error: for each function it appears in.)
        kernel/slow-work.c: In function 'slow_work_wait_for_items':
        kernel/slow-work.c:950: error: 'slow_work_unreg_sync_lock' undeclared (first use in this function)
        kernel/slow-work.c:951: error: 'slow_work_unreg_wq' undeclared (first use in this function)
        kernel/slow-work.c:961: error: 'slow_work_unreg_work_item' undeclared (first use in this function)
        kernel/slow-work.c:974: error: 'slow_work_unreg_module' undeclared (first use in this function)
        kernel/slow-work.c:977: error: 'slow_work_thread_processing' undeclared (first use in this function)
        make[1]: *** [kernel/slow-work.o] Error 1
      
      Fix this by:
      
       (1) Extracting the bits of slow_work_execute() that are contingent on
           CONFIG_MODULES, and the bits that should be, into inline functions and
           placing them into the #ifdef'd section that defines the relevant variables
           and adding stubs for moduleless kernels.  This allows the removal of some
           #ifdefs.
      
       (2) #ifdef'ing out the contents of slow_work_wait_for_items() in moduleless
           kernels.
      
      The four functions related to handling module unloading synchronisation (and
      their associated variables) could be offloaded into a separate .c file, but
      each function is only used once and three of them are tiny, so doing so would
      prevent them from being inlined.
      
      Reported-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fa1dae49