Merge branch 'for-3.9/drivers' of git://git.kernel.dk/linux-block
Linus Torvalds [Thu, 28 Feb 2013 21:16:07 +0000 (13:16 -0800)]
Pull block driver bits from Jens Axboe:
 "After the block IO core bits are in, please grab the driver updates
  from below as well.  It contains:

   - Fix ancient regression in dac960.  Nobody must be using that
     anymore...

   - Some good fixes from Guo Ghao for loop, fixing both potential
     oopses and deadlocks.

   - Improve mtip32xx for NUMA systems, by being a bit more clever in
     distributing work.

   - Add IBM RamSan 70/80 driver.  A second round of fixes for that is
     pending, that will come in through for-linus during the 3.9 cycle
     as per usual.

   - A few xen-blk{back,front} fixes from Konrad and Roger.

   - Other minor fixes and improvements."

* 'for-3.9/drivers' of git://git.kernel.dk/linux-block:
  loopdev: ignore negative offset when calculate loop device size
  loopdev: remove an user triggerable oops
  loopdev: move common code into loop_figure_size()
  loopdev: update block device size in loop_set_status()
  loopdev: fix a deadlock
  xen-blkback: use balloon pages for persistent grants
  xen-blkfront: drop the use of llist_for_each_entry_safe
  xen/blkback: Don't trust the handle from the frontend.
  xen-blkback: do not leak mode property
  block: IBM RamSan 70/80 driver fixes
  rsxx: add slab.h include to dma.c
  drivers/block/mtip32xx: add missing GENERIC_HARDIRQS dependency
  block: remove new __devinit/exit annotations on ramsam driver
  block: IBM RamSan 70/80 device driver
  drivers/block/mtip32xx/mtip32xx.c:1726:5: sparse: symbol 'mtip_send_trim' was not declared. Should it be static?
  drivers/block/mtip32xx/mtip32xx.c:4029:1: sparse: symbol 'mtip_workq_sdbf0' was not declared. Should it be static?
  dac960: return success instead of -ENOTTY
  mtip32xx: add trim support
  mtip32xx: Add workqueue and NUMA support
  block: delete super ancient PC-XT driver for 1980's hardware

1  2 
MAINTAINERS
drivers/block/DAC960.c
drivers/block/loop.c

diff --combined MAINTAINERS
@@@ -97,13 -97,12 +97,13 @@@ Descriptions of section entries
           X:   net/ipv6/
           matches all files in and below net excluding net/ipv6/
        K: Keyword perl extended regex pattern to match content in a
 -         patch or file.  For instance:
 +         patch or file, or an affected filename.  For instance:
           K: of_get_profile
 -            matches patches or files that contain "of_get_profile"
 +            matches patch or file content, or filenames, that contain
 +            "of_get_profile"
           K: \b(printk|pr_(info|err))\b
 -            matches patches or files that contain one or more of the words
 -            printk, pr_info or pr_err
 +            matches patch or file content, or filenames, that contain one or
 +            more of the words printk, pr_info or pr_err
           One regex pattern per line.  Multiple K: lines acceptable.
  
  Note: For the hard of thinking, this list is meant to remain in alphabetical
@@@ -466,14 -465,6 +466,14 @@@ S:       Maintaine
  F:    drivers/scsi/aic7xxx/
  F:    drivers/scsi/aic7xxx_old/
  
 +AIMSLAB FM RADIO RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-aimslab*
 +
  AIO
  M:    Benjamin LaHaise <bcrl@kvack.org>
  L:    linux-aio@kvack.org
@@@ -568,18 -559,6 +568,18 @@@ L:       linux-rdma@vger.kernel.or
  S:    Maintained
  F:    drivers/infiniband/hw/amso1100/
  
 +ANALOG DEVICES INC AD9389B DRIVER
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/i2c/ad9389b*
 +
 +ANALOG DEVICES INC ADV7604 DRIVER
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/i2c/adv7604*
 +
  ANALOG DEVICES INC ASOC CODEC DRIVERS
  M:    Lars-Peter Clausen <lars@metafoo.de>
  L:    device-drivers-devel@blackfin.uclinux.org
@@@ -691,16 -670,8 +691,16 @@@ F:       drivers/input/serio/ambakmi.
  F:    include/linux/amba/kmi.h
  
  ARM PRIMECELL MMCI PL180/1 DRIVER
 -S:    Orphan
 +M:    Russell King <linux@arm.linux.org.uk>
 +S:    Maintained
  F:    drivers/mmc/host/mmci.*
 +F:    include/linux/amba/mmci.h
 +
 +ARM PRIMECELL UART PL010 AND PL011 DRIVERS
 +M:    Russell King <linux@arm.linux.org.uk>
 +S:    Maintained
 +F:    drivers/tty/serial/amba-pl01*.c
 +F:    include/linux/amba/serial.h
  
  ARM PRIMECELL BUS SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
@@@ -1147,14 -1118,6 +1147,14 @@@ F:    arch/arm/mach-s5pv210/mach-goni.
  F:    arch/arm/mach-exynos/mach-universal_c210.c
  F:    arch/arm/mach-exynos/mach-nuri.c
  
 +ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +M:    Kamil Debski <k.debski@samsung.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/platform/s5p-g2d/
 +
  ARM/SAMSUNG S5P SERIES FIMC SUPPORT
  M:    Kyungmin Park <kyungmin.park@samsung.com>
  M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
@@@ -1285,17 -1248,12 +1285,17 @@@ M:   Tony Prisk <linux@prisktech.co.nz
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-vt8500/
 +F:    drivers/clocksource/vt8500_timer.c
 +F:    drivers/gpio/gpio-vt8500.c
 +F:    drivers/mmc/host/wmt-sdmmc.c
 +F:    drivers/pwm/pwm-vt8500.c
 +F:    drivers/rtc/rtc-vt8500.c
 +F:    drivers/tty/serial/vt8500_serial.c
 +F:    drivers/usb/host/ehci-vt8500.c
 +F:    drivers/usb/host/uhci-platform.c
  F:    drivers/video/vt8500lcdfb.*
  F:    drivers/video/wm8505fb*
  F:    drivers/video/wmt_ge_rops.*
 -F:    drivers/tty/serial/vt8500_serial.c
 -F:    drivers/rtc/rtc-vt8500.c
 -F:    drivers/mmc/host/wmt-sdmmc.c
  
  ARM/ZIPIT Z2 SUPPORT
  M:    Marek Vasut <marek.vasut@gmail.com>
@@@ -1304,14 -1262,6 +1304,14 @@@ S:    Maintaine
  F:    arch/arm/mach-pxa/z2.c
  F:    arch/arm/mach-pxa/include/mach/z2.h
  
 +ARM/ZYNQ ARCHITECTURE
 +M:    Michal Simek <michal.simek@xilinx.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +W:    http://wiki.xilinx.com
 +T:    git git://git.xilinx.com/linux-xlnx.git
 +S:    Supported
 +F:    arch/arm/mach-zynq/
 +
  ARM64 PORT (AARCH64 ARCHITECTURE)
  M:    Catalin Marinas <catalin.marinas@arm.com>
  M:    Will Deacon <will.deacon@arm.com>
@@@ -1320,14 -1270,6 +1320,14 @@@ S:    Maintaine
  F:    arch/arm64/
  F:    Documentation/arm64/
  
 +AS3645A LED FLASH CONTROLLER DRIVER
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/as3645a.c
 +F:    include/media/as3645a.h
 +
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
  L:    lm-sensors@lm-sensors.org
@@@ -1361,7 -1303,7 +1361,7 @@@ F:      include/linux/dmaengine.
  F:    include/linux/async_tx.h
  
  AT24 EEPROM DRIVER
 -M:    Wolfram Sang <w.sang@pengutronix.de>
 +M:    Wolfram Sang <wsa@the-dreams.de>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/misc/eeprom/at24.c
@@@ -1575,14 -1517,6 +1575,14 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/az6007.c
  
 +AZTECH FM RADIO RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-aztech*
 +
  B43 WIRELESS DRIVER
  M:    Stefano Brivio <stefano.brivio@polimi.it>
  L:    linux-wireless@vger.kernel.org
@@@ -1682,15 -1616,6 +1682,15 @@@ W:    http://blackfin.uclinux.org
  S:    Supported
  F:    drivers/i2c/busses/i2c-bfin-twi.c
  
 +BLACKFIN MEDIA DRIVER
 +M:    Scott Jiang <scott.jiang.linux@gmail.com>
 +L:    uclinux-dist-devel@blackfin.uclinux.org
 +W:    http://blackfin.uclinux.org/
 +S:    Supported
 +F:    drivers/media/platform/blackfin/
 +F:    drivers/media/i2c/adv7183*
 +F:    drivers/media/i2c/vs6624*
 +
  BLINKM RGB LED DRIVER
  M:    Jan-Simon Moeller <jansimon.moeller@gmx.de>
  S:    Maintained
@@@ -1800,8 -1725,7 +1800,8 @@@ F:      drivers/bcma
  F:    include/linux/bcma/
  
  BROCADE BFA FC SCSI DRIVER
 -M:    Krishna C Gudipati <kgudipat@brocade.com>
 +M:    Anil Gurumurthy <agurumur@brocade.com>
 +M:    Vijaya Mohan Guvva <vmohan@brocade.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bfa/
@@@ -1875,14 -1799,6 +1875,14 @@@ S:    Supporte
  F:    Documentation/filesystems/caching/cachefiles.txt
  F:    fs/cachefiles/
  
 +CADET FM/AM RADIO RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-cadet*
 +
  CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER
  M:    Jonathan Corbet <corbet@lwn.net>
  L:    linux-media@vger.kernel.org
@@@ -2019,8 -1935,7 +2019,8 @@@ F:      drivers/misc/
  
  CHECKPATCH
  M:    Andy Whitcroft <apw@canonical.com>
 -S:    Supported
 +M:    Joe Perches <joe@perches.com>
 +S:    Maintained
  F:    scripts/checkpatch.pl
  
  CHINESE DOCUMENTATION
@@@ -2075,8 -1990,8 +2075,8 @@@ S:      Maintaine
  F:    include/linux/clk.h
  
  CISCO FCOE HBA DRIVER
 -M:    Abhijeet Joglekar <abjoglek@cisco.com>
 -M:    Venkata Siva Vijayendra Bhamidipati <vbhamidi@cisco.com>
 +M:    Hiral Patel <hiralpat@cisco.com>
 +M:    Suma Ramars <sramars@cisco.com>
  M:    Brian Uchino <buchino@cisco.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
@@@ -2225,10 -2140,10 +2225,10 @@@ S:   Maintaine
  F:    tools/power/cpupower
  
  CPUSETS
 -M:    Paul Menage <paul@paulmenage.org>
 +M:    Li Zefan <lizefan@huawei.com>
  W:    http://www.bullopensource.org/cpuset/
  W:    http://oss.sgi.com/projects/cpusets/
 -S:    Supported
 +S:    Maintained
  F:    Documentation/cgroups/cpusets.txt
  F:    include/linux/cpuset.h
  F:    kernel/cpuset.c
@@@ -2284,15 -2199,6 +2284,15 @@@ F:    Documentation/video4linux/cx18.tx
  F:    drivers/media/pci/cx18/
  F:    include/uapi/linux/ivtv*
  
 +CX2341X MPEG ENCODER HELPER MODULE
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/i2c/cx2341x*
 +F:    include/media/cx2341x*
 +
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-media@vger.kernel.org
@@@ -2670,13 -2576,6 +2670,13 @@@ S:    Maintaine
  F:    drivers/gpu/drm/tegra/
  F:    Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt
  
 +DSBR100 USB FM RADIO DRIVER
 +M:    Alexey Klimov <klimov.linux@gmail.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/radio/dsbr100.c
 +
  DSCC4 DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -3075,6 -2974,11 +3075,6 @@@ S:     Maintaine
  F:    include/linux/netfilter_bridge/
  F:    net/bridge/
  
 -ETHERTEAM 16I DRIVER
 -M:    Mika Kuoppala <miku@iki.fi>
 -S:    Maintained
 -F:    drivers/net/ethernet/fujitsu/eth16i.c
 -
  EXT2 FILE SYSTEM
  M:    Jan Kara <jack@suse.cz>
  L:    linux-ext4@vger.kernel.org
@@@ -3443,14 -3347,6 +3443,14 @@@ W:    http://www.icp-vortex.com
  S:    Supported
  F:    drivers/scsi/gdt*
  
 +GEMTEK FM RADIO RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-gemtek*
 +
  GENERIC GPIO I2C DRIVER
  M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
  S:    Supported
@@@ -3854,13 -3750,6 +3854,13 @@@ F:    drivers/i2c/busses/i2c-sis96x.
  F:    drivers/i2c/busses/i2c-via.c
  F:    drivers/i2c/busses/i2c-viapro.c
  
 +I2C/SMBUS ISMT DRIVER
 +M:    Seth Heasley <seth.heasley@intel.com>
 +M:    Neil Horman <nhorman@tuxdriver.com>
 +L:    linux-i2c@vger.kernel.org
 +F:    drivers/i2c/busses/i2c-ismt.c
 +F:    Documentation/i2c/busses/i2c-ismt
 +
  I2C/SMBUS STUB DRIVER
  M:    "Mark M. Hoffman" <mhoffman@lightlink.com>
  L:    linux-i2c@vger.kernel.org
@@@ -3868,11 -3757,12 +3868,11 @@@ S:   Maintaine
  F:    drivers/i2c/i2c-stub.c
  
  I2C SUBSYSTEM
 -M:    Wolfram Sang <w.sang@pengutronix.de>
 +M:    Wolfram Sang <wsa@the-dreams.de>
  M:    "Ben Dooks (embedded platforms)" <ben-linux@fluff.org>
  L:    linux-i2c@vger.kernel.org
  W:    http://i2c.wiki.kernel.org/
 -T:    quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
 -T:    git git://git.pengutronix.de/git/wsa/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
  S:    Maintained
  F:    Documentation/i2c/
  F:    drivers/i2c/
@@@ -4326,7 -4216,6 +4326,7 @@@ M:      Thomas Gleixner <tglx@linutronix.de
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    kernel/irq/
 +F:    drivers/irqchip/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
@@@ -4344,14 -4233,6 +4344,14 @@@ F:    Documentation/isapnp.tx
  F:    drivers/pnp/isapnp/
  F:    include/linux/isapnp.h
  
 +ISA RADIO MODULE
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-isa*
 +
  iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
  M:    Peter Jones <pjones@redhat.com>
  M:    Konrad Rzeszutek Wilk <konrad@kernel.org>
@@@ -4510,14 -4391,6 +4510,14 @@@ W:    http://lse.sourceforge.net/kdump
  S:    Maintained
  F:    Documentation/kdump/
  
 +KEENE FM RADIO TRANSMITTER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-keene*
 +
  KERNEL AUTOMOUNTER v4 (AUTOFS4)
  M:    Ian Kent <raven@themaw.net>
  L:    autofs@vger.kernel.org
@@@ -4608,15 -4481,6 +4608,15 @@@ F:    arch/s390/include/asm/kvm
  F:    arch/s390/kvm/
  F:    drivers/s390/kvm/
  
 +KERNEL VIRTUAL MACHINE (KVM) FOR ARM
 +M:    Christoffer Dall <cdall@cs.columbia.edu>
 +L:    kvmarm@lists.cs.columbia.edu
 +W:    http://systems.cs.columbia.edu/projects/kvm-arm
 +S:    Maintained
 +F:    arch/arm/include/uapi/asm/kvm*
 +F:    arch/arm/include/asm/kvm*
 +F:    arch/arm/kvm/
 +
  KEXEC
  M:    Eric Biederman <ebiederm@xmission.com>
  W:    http://kernel.org/pub/linux/utils/kernel/kexec/
@@@ -5005,13 -4869,6 +5005,13 @@@ Q:    http://patchwork.linuxtv.org/project
  S:    Maintained
  F:    drivers/media/dvb-frontends/m88rs2000*
  
 +MA901 MASTERKIT USB FM RADIO DRIVER
 +M:      Alexey Klimov <klimov.linux@gmail.com>
 +L:      linux-media@vger.kernel.org
 +T:      git git://linuxtv.org/media_tree.git
 +S:      Maintained
 +F:      drivers/media/radio/radio-ma901.c
 +
  MAC80211
  M:    Johannes Berg <johannes@sipsolutions.net>
  L:    linux-wireless@vger.kernel.org
@@@ -5109,14 -4966,6 +5109,14 @@@ S:    Maintaine
  F:    Documentation/hwmon/max6650
  F:    drivers/hwmon/max6650.c
  
 +MAXIRADIO FM RADIO RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/radio-maxiradio*
 +
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  P:    LinuxTV.org Project
@@@ -5139,14 -4988,6 +5139,14 @@@ F:    include/uapi/linux/meye.
  F:    include/uapi/linux/ivtv*
  F:    include/uapi/linux/uvcvideo.h
  
 +MEDIAVISION PRO MOVIE STUDIO DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/parport/pms*
 +
  MEGARAID SCSI DRIVERS
  M:    Neela Syam Kolli <megaraidlinux@lsi.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5169,10 -5010,6 +5169,10 @@@ L:    linux-mm@kvack.or
  W:    http://www.linux-mm.org
  S:    Maintained
  F:    include/linux/mm.h
 +F:    include/linux/gfp.h
 +F:    include/linux/mmzone.h
 +F:    include/linux/memory_hotplug.h
 +F:    include/linux/vmalloc.h
  F:    mm/
  
  MEMORY RESOURCE CONTROLLER
@@@ -5220,14 -5057,6 +5220,14 @@@ S:    Supporte
  F:    Documentation/mips/
  F:    arch/mips/
  
 +MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/radio/radio-miropcm20*
 +
  MODULE SUPPORT
  M:    Rusty Russell <rusty@rustcorp.com.au>
  S:    Maintained
@@@ -5266,38 -5095,6 +5266,38 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Supported
  F:    drivers/platform/x86/msi-wmi.c
  
 +MT9M032 SENSOR DRIVER
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/mt9m032.c
 +F:    include/media/mt9m032.h
 +
 +MT9P031 SENSOR DRIVER
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/mt9p031.c
 +F:    include/media/mt9p031.h
 +
 +MT9T001 SENSOR DRIVER
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/mt9t001.c
 +F:    include/media/mt9t001.h
 +
 +MT9V032 SENSOR DRIVER
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/mt9v032.c
 +F:    include/media/mt9v032.h
 +
  MULTIFUNCTION DEVICES (MFD)
  M:    Samuel Ortiz <sameo@linux.intel.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6.git
@@@ -5439,7 -5236,6 +5439,7 @@@ F:      net/netrom
  NETWORK BLOCK DEVICE (NBD)
  M:    Paul Clements <Paul.Clements@steeleye.com>
  S:    Maintained
 +L:    nbd-general@lists.sourceforge.net
  F:    Documentation/blockdev/nbd.txt
  F:    drivers/block/nbd.c
  F:    include/linux/nbd.h
@@@ -5573,6 -5369,13 +5573,6 @@@ F:     include/linux/sunrpc
  F:    include/uapi/linux/nfs*
  F:    include/uapi/linux/sunrpc/
  
 -NI5010 NETWORK DRIVER
 -M:    Jan-Pascal van Best <janpascal@vanbest.org>
 -M:    Andreas Mohr <andi@lisas.de>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/racal/ni5010.*
 -
  NILFS2 FILESYSTEM
  M:    KONISHI Ryusuke <konishi.ryusuke@lab.ntt.co.jp>
  L:    linux-nilfs@vger.kernel.org
@@@ -5598,13 -5401,6 +5598,13 @@@ S:    Maintaine
  F:    Documentation/scsi/NinjaSCSI.txt
  F:    drivers/scsi/nsp32*
  
 +NTB DRIVER
 +M:    Jon Mason <jon.mason@intel.com>
 +S:    Supported
 +F:    drivers/ntb/
 +F:    drivers/net/ntb_netdev.c
 +F:    include/linux/ntb.h
 +
  NTFS FILESYSTEM
  M:    Anton Altaparmakov <anton@tuxera.com>
  L:    linux-ntfs-dev@lists.sourceforge.net
@@@ -5702,7 -5498,7 +5702,7 @@@ S:      Maintaine
  F:    drivers/mmc/host/omap.c
  
  OMAP HS MMC SUPPORT
 -M:    Venkatraman S <svenkatr@ti.com>
 +M:    Balaji T K <balajitk@ti.com>
  L:    linux-mmc@vger.kernel.org
  L:    linux-omap@vger.kernel.org
  S:    Maintained
@@@ -5982,6 -5778,15 +5982,6 @@@ L:     linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/muxes/i2c-mux-pca9541.c
  
 -PCA9564/PCA9665 I2C BUS DRIVER
 -M:    Wolfram Sang <w.sang@pengutronix.de>
 -L:    linux-i2c@vger.kernel.org
 -S:    Maintained
 -F:    drivers/i2c/algos/i2c-algo-pca.c
 -F:    drivers/i2c/busses/i2c-pca-*
 -F:    include/linux/i2c-algo-pca.h
 -F:    include/linux/i2c-pca-platform.h
 -
  PCDP - PRIMARY CONSOLE AND DEBUG PORT
  M:    Khalid Aziz <khalid@gonehiking.org>
  S:    Maintained
@@@ -6450,14 -6255,6 +6450,14 @@@ L:    linux-hexagon@vger.kernel.or
  S:    Supported
  F:    arch/hexagon/
  
 +QUICKCAM PARALLEL PORT WEBCAMS
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/parport/*-qcam*
 +
  RADOS BLOCK DEVICE (RBD)
  M:    Yehuda Sadeh <yehuda@inktank.com>
  M:    Sage Weil <sage@inktank.com>
@@@ -6515,6 -6312,12 +6515,12 @@@ S:    Maintaine
  F:    Documentation/blockdev/ramdisk.txt
  F:    drivers/block/brd.c
  
+ RAMSAM DRIVER (IBM RamSan 70/80 PCI SSD Flash Card)
+ M:    Joshua Morris <josh.h.morris@us.ibm.com>
+ M:    Philip Kelleher <pjk1939@linux.vnet.ibm.com>
+ S:    Maintained
+ F:    drivers/block/rsxx/
  RANDOM NUMBER DRIVER
  M:    Theodore Ts'o" <tytso@mit.edu>
  S:    Maintained
@@@ -6701,7 -6504,7 +6707,7 @@@ S:      Supporte
  F:    drivers/s390/net/
  
  S390 ZCRYPT DRIVER
 -M:    Holger Dengler <hd@linux.vnet.ibm.com>
 +M:    Ingo Tuchscherer <ingo.tuchscherer@de.ibm.com>
  M:    linux390@de.ibm.com
  L:    linux-s390@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
@@@ -6732,14 -6535,6 +6738,14 @@@ L:    linux-arm-kernel@lists.infradead.or
  S:    Supported
  F:    drivers/mmc/host/s3cmci.*
  
 +SAA6588 RDS RECEIVER DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/i2c/saa6588*
 +
  SAA7134 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-media@vger.kernel.org
@@@ -6750,9 -6545,10 +6756,9 @@@ F:     Documentation/video4linux/saa7134
  F:    drivers/media/pci/saa7134/
  
  SAA7146 VIDEO4LINUX-2 DRIVER
 -M:    Michael Hunold <michael@mihu.de>
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -W:    http://www.mihu.de/linux/saa7146
  S:    Maintained
  F:    drivers/media/common/saa7146/
  F:    drivers/media/pci/saa7146/
@@@ -6794,13 -6590,6 +6800,13 @@@ S:    Maintaine
  F:    drivers/media/platform/s3c-camif/
  F:    include/media/s3c_camif.h
  
 +SAMSUNG S5C73M3 CAMERA DRIVER
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +M:    Andrzej Hajda <a.hajda@samsung.com>
 +L:    linux-media@vger.kernel.org
 +S:    Supported
 +F:    drivers/media/i2c/s5c73m3/*
 +
  SERIAL DRIVERS
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    linux-serial@vger.kernel.org
@@@ -6814,16 -6603,8 +6820,16 @@@ F:    include/linux/dw_dmac.
  F:    drivers/dma/dw_dmac_regs.h
  F:    drivers/dma/dw_dmac.c
  
 +SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
 +M:    Seungwon Jeon <tgih.jun@samsung.com>
 +M:    Jaehoon Chung <jh80.chung@samsung.com>
 +L:    linux-mmc@vger.kernel.org
 +S:    Maintained
 +F:    include/linux/mmc/dw_mmc.h
 +F:    drivers/mmc/host/dw_mmc*
 +
  TIMEKEEPING, NTP
 -M:    John Stultz <johnstul@us.ibm.com>
 +M:    John Stultz <john.stultz@linaro.org>
  M:    Thomas Gleixner <tglx@linutronix.de>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
@@@ -7045,8 -6826,7 +7051,8 @@@ S:      Supporte
  F:    drivers/net/ethernet/sfc/
  
  SGI GRU DRIVER
 -M:    Jack Steiner <steiner@sgi.com>
 +M:    Dimitri Sivanich <sivanich@sgi.com>
 +M:    Robin Holt <holt@sgi.com>
  S:    Maintained
  F:    drivers/misc/sgi-gru/
  
@@@ -7070,38 -6850,6 +7076,38 @@@ M:    Robin Holt <holt@sgi.com
  S:    Maintained
  F:    drivers/misc/sgi-xp/
  
 +SI470X FM RADIO RECEIVER I2C DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/radio/si470x/radio-si470x-i2c.c
 +
 +SI470X FM RADIO RECEIVER USB DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/radio/si470x/radio-si470x-common.c
 +F:    drivers/media/radio/si470x/radio-si470x.h
 +F:    drivers/media/radio/si470x/radio-si470x-usb.c
 +
 +SH_VEU V4L2 MEM2MEM DRIVER
 +M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/platform/sh_veu.c
 +F:    include/media/sh_veu.h
 +
 +SH_VOU V4L2 OUTPUT DRIVER
 +M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/platform/sh_vou.c
 +F:    include/media/sh_vou.h
 +
  SIMPLE FIRMWARE INTERFACE (SFI)
  M:    Len Brown <lenb@kernel.org>
  L:    sfi-devel@simplefirmware.org
@@@ -7273,6 -7021,14 +7279,6 @@@ L:     linux-fbdev@vger.kernel.or
  S:    Maintained
  F:    drivers/video/smscufx.c
  
 -SN-IA64 (Itanium) SUB-PLATFORM
 -M:    Jes Sorensen <jes@sgi.com>
 -L:    linux-altix@sgi.com
 -L:    linux-ia64@vger.kernel.org
 -W:    http://www.sgi.com/altix
 -S:    Maintained
 -F:    arch/ia64/sn/
 -
  SOC-CAMERA V4L2 SUBSYSTEM
  M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
  L:    linux-media@vger.kernel.org
@@@ -7428,7 -7184,6 +7434,7 @@@ F:      drivers/clk/spear
  
  SPI SUBSYSTEM
  M:    Grant Likely <grant.likely@secretlab.ca>
 +M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  L:    spi-devel-general@lists.sourceforge.net
  Q:    http://patchwork.kernel.org/project/spi-devel-general/list/
  T:    git git://git.secretlab.ca/git/linux-2.6.git
@@@ -7542,7 -7297,6 +7548,7 @@@ STAGING - NVIDIA COMPLIANT EMBEDDED CON
  M:    Julian Andres Klode <jak@jak-linux.org>
  M:    Marc Dietrich <marvin24@gmx.de>
  L:    ac100@lists.launchpad.net (moderated for non-subscribers)
 +L:    linux-tegra@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/nvec/
  
@@@ -7555,7 -7309,8 +7561,7 @@@ S:      Odd Fixe
  F:    drivers/staging/olpc_dcon/
  
  STAGING - OZMO DEVICES USB OVER WIFI DRIVER
 -M:    Rupesh Gujare <rgujare@ozmodevices.com>
 -M:    Chris Kelly <ckelly@ozmodevices.com>
 +M:    Rupesh Gujare <rupesh.gujare@atmel.com>
  S:    Maintained
  F:    drivers/staging/ozwpan/
  
@@@ -7770,14 -7525,6 +7776,14 @@@ T:    git git://linuxtv.org/mkrufky/tuners
  S:    Maintained
  F:    drivers/media/tuners/tda8290.*
  
 +TDA9840 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/i2c/tda9840*
 +
  TEA5761 TUNER DRIVER
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-media@vger.kernel.org
@@@ -7794,35 -7541,14 +7800,35 @@@ T:   git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/tuners/tea5767.*
  
 +TEA6415C MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/i2c/tea6415c*
 +
 +TEA6420 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/i2c/tea6420*
 +
  TEAM DRIVER
 -M:    Jiri Pirko <jpirko@redhat.com>
 +M:    Jiri Pirko <jiri@resnulli.us>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/team/
  F:    include/linux/if_team.h
  F:    include/uapi/linux/if_team.h
  
 +TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT
 +M:    Savoir-faire Linux Inc. <kernel@savoirfairelinux.com>
 +S:    Maintained
 +F:    arch/x86/platform/ts5500/
 +
  TECHNOTREND USB IR RECEIVER
  M:    Sean Young <sean@mess.org>
  L:    linux-media@vger.kernel.org
@@@ -7835,7 -7561,9 +7841,7 @@@ L:      linux-tegra@vger.kernel.or
  Q:    http://patchwork.ozlabs.org/project/linux-tegra/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra.git
  S:    Supported
 -F:    arch/arm/mach-tegra
 -F:    arch/arm/boot/dts/tegra*
 -F:    arch/arm/configs/tegra_defconfig
 +K:    (?i)[^a-z]tegra
  
  TEHUTI ETHERNET DRIVER
  M:    Andy Gospodarek <andy@greyhouse.net>
@@@ -7863,11 -7591,6 +7869,11 @@@ S:      Supporte
  F:      drivers/thermal/
  F:      include/linux/thermal.h
  
 +THINGM BLINK(1) USB RGB LED DRIVER
 +M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 +S:    Maintained
 +F:    drivers/hid/hid-thingm.c
 +
  THINKPAD ACPI EXTRAS DRIVER
  M:    Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
  L:    ibm-acpi-devel@lists.sourceforge.net
@@@ -7900,22 -7623,6 +7906,22 @@@ F:    Documentation/backlight/lp855x-drive
  F:    drivers/video/backlight/lp855x_bl.c
  F:    include/linux/platform_data/lp855x.h
  
 +TI LP8727 CHARGER DRIVER
 +M:    Milo Kim <milo.kim@ti.com>
 +S:    Maintained
 +F:    drivers/power/lp8727_charger.c
 +F:    include/linux/platform_data/lp8727.h
 +
 +TI LP8788 MFD DRIVER
 +M:    Milo Kim <milo.kim@ti.com>
 +S:    Maintained
 +F:    drivers/iio/adc/lp8788_adc.c
 +F:    drivers/leds/leds-lp8788.c
 +F:    drivers/mfd/lp8788*.c
 +F:    drivers/power/lp8788-charger.c
 +F:    drivers/regulator/lp8788-*.c
 +F:    include/linux/mfd/lp8788*.h
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -8210,10 -7917,9 +8216,10 @@@ F:    drivers/net/wireless/ath/ar5523
  USB ATTACHED SCSI
  M:    Matthew Wilcox <willy@linux.intel.com>
  M:    Sarah Sharp <sarah.a.sharp@linux.intel.com>
 +M:    Gerd Hoffmann <kraxel@redhat.com>
  L:    linux-usb@vger.kernel.org
  L:    linux-scsi@vger.kernel.org
 -S:    Supported
 +S:    Maintained
  F:    drivers/usb/storage/uas.c
  
  USB CDC ETHERNET DRIVER
@@@ -8457,14 -8163,6 +8463,14 @@@ S:    Maintaine
  F:    drivers/media/usb/uvc/
  F:    include/uapi/linux/uvcvideo.h
  
 +USB VISION DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/usb/usbvision/
 +
  USB WEBCAM GADGET
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-usb@vger.kernel.org
@@@ -8614,14 -8312,6 +8620,14 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/via/via-velocity.*
  
 +VIVI VIRTUAL VIDEO DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Maintained
 +F:    drivers/media/platform/vivi*
 +
  VLAN (802.1Q)
  M:    Patrick McHardy <kaber@trash.net>
  L:    netdev@vger.kernel.org
diff --combined drivers/block/DAC960.c
@@@ -6547,7 -6547,7 +6547,7 @@@ static ssize_t dac960_user_command_proc
                                       const char __user *Buffer,
                                       size_t Count, loff_t *pos)
  {
 -  DAC960_Controller_T *Controller = (DAC960_Controller_T *) PDE(file->f_path.dentry->d_inode)->data;
 +  DAC960_Controller_T *Controller = (DAC960_Controller_T *) PDE(file_inode(file))->data;
    unsigned char CommandBuffer[80];
    int Length;
    if (Count > sizeof(CommandBuffer)-1) return -EINVAL;
@@@ -7054,6 -7054,7 +7054,7 @@@ static long DAC960_gam_ioctl(struct fil
        else
                ErrorCode =  0;
        }
+       break;
        default:
        ErrorCode = -ENOTTY;
      }
diff --combined drivers/block/loop.c
@@@ -162,12 -162,13 +162,13 @@@ static struct loop_func_table *xfer_fun
  
  static loff_t get_size(loff_t offset, loff_t sizelimit, struct file *file)
  {
-       loff_t size, loopsize;
+       loff_t loopsize;
  
        /* Compute loopsize in bytes */
-       size = i_size_read(file->f_mapping->host);
-       loopsize = size - offset;
-       /* offset is beyond i_size, wierd but possible */
+       loopsize = i_size_read(file->f_mapping->host);
+       if (offset > 0)
+               loopsize -= offset;
+       /* offset is beyond i_size, weird but possible */
        if (loopsize < 0)
                return 0;
  
@@@ -190,6 -191,7 +191,7 @@@ figure_loop_size(struct loop_device *lo
  {
        loff_t size = get_size(offset, sizelimit, lo->lo_backing_file);
        sector_t x = (sector_t)size;
+       struct block_device *bdev = lo->lo_device;
  
        if (unlikely((loff_t)x != size))
                return -EFBIG;
        if (lo->lo_sizelimit != sizelimit)
                lo->lo_sizelimit = sizelimit;
        set_capacity(lo->lo_disk, x);
+       bd_set_size(bdev, (loff_t)get_capacity(bdev->bd_disk) << 9);
+       /* let user-space know about the new size */
+       kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE);
        return 0;
  }
  
@@@ -1091,10 -1096,10 +1096,10 @@@ loop_set_status(struct loop_device *lo
                return err;
  
        if (lo->lo_offset != info->lo_offset ||
-           lo->lo_sizelimit != info->lo_sizelimit) {
+           lo->lo_sizelimit != info->lo_sizelimit)
                if (figure_loop_size(lo, info->lo_offset, info->lo_sizelimit))
                        return -EFBIG;
-       }
        loop_config_discard(lo);
  
        memcpy(lo->lo_file_name, info->lo_file_name, LO_NAME_SIZE);
@@@ -1139,7 -1144,7 +1144,7 @@@ loop_get_status(struct loop_device *lo
  
        if (lo->lo_state != Lo_bound)
                return -ENXIO;
 -      error = vfs_getattr(file->f_path.mnt, file->f_path.dentry, &stat);
 +      error = vfs_getattr(&file->f_path, &stat);
        if (error)
                return error;
        memset(info, 0, sizeof(*info));
@@@ -1271,28 -1276,10 +1276,10 @@@ loop_get_status64(struct loop_device *l
  
  static int loop_set_capacity(struct loop_device *lo, struct block_device *bdev)
  {
-       int err;
-       sector_t sec;
-       loff_t sz;
-       err = -ENXIO;
        if (unlikely(lo->lo_state != Lo_bound))
-               goto out;
-       err = figure_loop_size(lo, lo->lo_offset, lo->lo_sizelimit);
-       if (unlikely(err))
-               goto out;
-       sec = get_capacity(lo->lo_disk);
-       /* the width of sector_t may be narrow for bit-shift */
-       sz = sec;
-       sz <<= 9;
-       mutex_lock(&bdev->bd_mutex);
-       bd_set_size(bdev, sz);
-       /* let user-space know about the new size */
-       kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE);
-       mutex_unlock(&bdev->bd_mutex);
+               return -ENXIO;
  
-  out:
-       return err;
+       return figure_loop_size(lo, lo->lo_offset, lo->lo_sizelimit);
  }
  
  static int lo_ioctl(struct block_device *bdev, fmode_t mode,
@@@ -1624,17 -1611,30 +1611,17 @@@ static int loop_add(struct loop_device 
        if (!lo)
                goto out;
  
 -      if (!idr_pre_get(&loop_index_idr, GFP_KERNEL))
 -              goto out_free_dev;
 -
 +      /* allocate id, if @id >= 0, we're requesting that specific id */
        if (i >= 0) {
 -              int m;
 -
 -              /* create specific i in the index */
 -              err = idr_get_new_above(&loop_index_idr, lo, i, &m);
 -              if (err >= 0 && i != m) {
 -                      idr_remove(&loop_index_idr, m);
 +              err = idr_alloc(&loop_index_idr, lo, i, i + 1, GFP_KERNEL);
 +              if (err == -ENOSPC)
                        err = -EEXIST;
 -              }
 -      } else if (i == -1) {
 -              int m;
 -
 -              /* get next free nr */
 -              err = idr_get_new(&loop_index_idr, lo, &m);
 -              if (err >= 0)
 -                      i = m;
        } else {
 -              err = -EINVAL;
 +              err = idr_alloc(&loop_index_idr, lo, 0, 0, GFP_KERNEL);
        }
        if (err < 0)
                goto out_free_dev;
 +      i = err;
  
        lo->lo_queue = blk_alloc_queue(GFP_KERNEL);
        if (!lo->lo_queue)
@@@ -1845,11 -1845,15 +1832,15 @@@ static int __init loop_init(void
                max_part = (1UL << part_shift) - 1;
        }
  
-       if ((1UL << part_shift) > DISK_MAX_PARTS)
-               return -EINVAL;
+       if ((1UL << part_shift) > DISK_MAX_PARTS) {
+               err = -EINVAL;
+               goto misc_out;
+       }
  
-       if (max_loop > 1UL << (MINORBITS - part_shift))
-               return -EINVAL;
+       if (max_loop > 1UL << (MINORBITS - part_shift)) {
+               err = -EINVAL;
+               goto misc_out;
+       }
  
        /*
         * If max_loop is specified, create that many devices upfront.
                range = 1UL << MINORBITS;
        }
  
-       if (register_blkdev(LOOP_MAJOR, "loop"))
-               return -EIO;
+       if (register_blkdev(LOOP_MAJOR, "loop")) {
+               err = -EIO;
+               goto misc_out;
+       }
  
        blk_register_region(MKDEV(LOOP_MAJOR, 0), range,
                                  THIS_MODULE, loop_probe, NULL, NULL);
  
        printk(KERN_INFO "loop: module loaded\n");
        return 0;
+ misc_out:
+       misc_deregister(&loop_misc);
+       return err;
  }
  
  static int loop_exit_cb(int id, void *ptr, void *data)
@@@ -1898,6 -1908,7 +1895,6 @@@ static void __exit loop_exit(void
        range = max_loop ? max_loop << part_shift : 1UL << MINORBITS;
  
        idr_for_each(&loop_index_idr, &loop_exit_cb, NULL);
 -      idr_remove_all(&loop_index_idr);
        idr_destroy(&loop_index_idr);
  
        blk_unregister_region(MKDEV(LOOP_MAJOR, 0), range);