The following commit has been merged in the master branch: commit 4e22fb273abdcd2fbf954988c1a3707758dc467c Merge: c6ea3cbd26e6679c787797b3002b4ba834340894 222229974824a4f30b417531cdc9b5b869d6a6b7 Author: Stephen Rothwell sfr@canb.auug.org.au Date: Thu Feb 14 11:48:18 2013 +1100
Merge remote-tracking branch 'net-next/master'
Conflicts: arch/mips/include/uapi/asm/socket.h
diff --combined MAINTAINERS index 7a229c6,5abc10e..59ca7a4 --- a/MAINTAINERS +++ b/MAINTAINERS @@@ -465,14 -465,6 +465,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 @@@ -567,18 -559,6 +567,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 @@@ -1138,14 -1118,6 +1138,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 @@@ -1298,14 -1270,6 +1298,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 @@@ -1553,14 -1517,6 +1553,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 @@@ -1660,15 -1616,6 +1660,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 @@@ -1778,8 -1725,7 +1778,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/ @@@ -1853,14 -1799,6 +1853,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 @@@ -2052,8 -1990,8 +2052,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 @@@ -2261,15 -2199,6 +2261,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 @@@ -2647,13 -2576,6 +2647,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 @@@ -3052,11 -2974,6 +3052,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 @@@ -3425,14 -3342,6 +3420,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 @@@ -3836,13 -3745,6 +3831,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 @@@ -4326,14 -4228,6 +4321,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 @@@ -4492,14 -4386,6 +4487,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 @@@ -4590,15 -4476,6 +4585,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/ @@@ -4987,13 -4864,6 +4982,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 @@@ -5091,14 -4961,6 +5086,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 @@@ -5121,14 -4983,6 +5116,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 @@@ -5175,18 -5029,6 +5170,18 @@@ F: drivers/mtd F: include/linux/mtd/ F: include/uapi/mtd/
+METAG ARCHITECTURE +M: James Hogan james.hogan@imgtec.com +S: Supported +F: arch/metag/ +F: Documentation/metag/ +F: Documentation/devicetree/bindings/metag/ +F: drivers/clocksource/metag_generic.c +F: drivers/irqchip/irq-metag.c +F: drivers/irqchip/irq-metag-ext.c +F: drivers/tty/metag_da.c +F: fs/imgdafs/ + MICROBLAZE ARCHITECTURE M: Michal Simek monstr@monstr.eu L: microblaze-uclinux@itee.uq.edu.au (moderated for non-subscribers) @@@ -5210,14 -5052,6 +5205,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 @@@ -5256,38 -5090,6 +5251,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 @@@ -5562,13 -5364,6 +5557,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 @@@ -6448,14 -6243,6 +6436,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 @@@ -6699,7 -6486,7 +6687,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/ @@@ -6730,14 -6517,6 +6718,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 @@@ -6748,9 -6527,10 +6736,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/ @@@ -6792,13 -6572,6 +6780,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 @@@ -7035,8 -6808,7 +7023,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/
@@@ -7060,38 -6832,6 +7048,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 @@@ -7263,6 -7003,14 +7251,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 @@@ -7658,12 -7406,6 +7646,12 @@@ F: lib/swiotlb. F: arch/*/kernel/pci-swiotlb.c F: include/linux/swiotlb.h
+SYNOPSYS ARC ARCHITECTURE +M: Vineet Gupta vgupta@synopsys.com +L: linux-snps-arc@vger.kernel.org +S: Supported +F: arch/arc/ + SYSV FILESYSTEM M: Christoph Hellwig hch@infradead.org S: Maintained @@@ -7765,14 -7507,6 +7753,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 @@@ -7789,22 -7523,6 +7777,22 @@@ 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 L: netdev@vger.kernel.org @@@ -8427,14 -8145,6 +8415,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 @@@ -8584,14 -8294,6 +8572,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 arch/mips/include/uapi/asm/socket.h index cc208f9,3e68bfb..47132f4 --- a/arch/mips/include/uapi/asm/socket.h +++ b/arch/mips/include/uapi/asm/socket.h @@@ -24,23 -24,21 +24,21 @@@ SIGPIPE when they die. */ #define SO_DONTROUTE 0x0010 /* Don't do local routing. */ #define SO_BROADCAST 0x0020 /* Allow transmission of - broadcast messages. */ + broadcast messages. */ #define SO_LINGER 0x0080 /* Block on close of a reliable socket to transmit pending data. */ #define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */ - #if 0 - To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ - #endif + #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */
#define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */ -#define SO_STYLE SO_TYPE /* Synonym */ +#define SO_STYLE SO_TYPE /* Synonym */ #define SO_ERROR 0x1007 /* get error status and clear */ #define SO_SNDBUF 0x1001 /* Send buffer size. */ #define SO_RCVBUF 0x1002 /* Receive buffer. */ #define SO_SNDLOWAT 0x1003 /* send low-water mark */ #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ #define SO_SNDTIMEO 0x1005 /* send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ +#define SO_RCVTIMEO 0x1006 /* receive timeout */ #define SO_ACCEPTCONN 0x1009 #define SO_PROTOCOL 0x1028 /* protocol type */ #define SO_DOMAIN 0x1029 /* domain/socket family */ @@@ -61,11 -59,11 +59,11 @@@ #define SO_BINDTODEVICE 25
/* Socket filtering */ -#define SO_ATTACH_FILTER 26 -#define SO_DETACH_FILTER 27 +#define SO_ATTACH_FILTER 26 +#define SO_DETACH_FILTER 27 #define SO_GET_FILTER SO_ATTACH_FILTER
-#define SO_PEERNAME 28 +#define SO_PEERNAME 28 #define SO_TIMESTAMP 29 #define SCM_TIMESTAMP SO_TIMESTAMP
@@@ -81,7 -79,7 +79,7 @@@ #define SO_TIMESTAMPING 37 #define SCM_TIMESTAMPING SO_TIMESTAMPING
-#define SO_RXQ_OVFL 40 +#define SO_RXQ_OVFL 40
#define SO_WIFI_STATUS 41 #define SCM_WIFI_STATUS SO_WIFI_STATUS @@@ -90,5 -88,6 +88,6 @@@ /* Instruct lower device to use last 4-bytes of skb data as FCS */ #define SO_NOFCS 43
+ #define SO_LOCK_FILTER 44
#endif /* _UAPI_ASM_SOCKET_H */ diff --combined drivers/net/ethernet/atheros/atl1c/atl1c_main.c index 0035c01,571b514..8f33315 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c @@@ -21,7 -21,7 +21,7 @@@
#include "atl1c.h"
-#define ATL1C_DRV_VERSION "1.0.1.0-NAPI" +#define ATL1C_DRV_VERSION "1.0.1.1-NAPI" char atl1c_driver_name[] = "atl1c"; char atl1c_driver_version[] = ATL1C_DRV_VERSION;
@@@ -472,7 -472,6 +472,6 @@@ static int atl1c_set_mac_addr(struct ne
memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len); - netdev->addr_assign_type &= ~NET_ADDR_RANDOM;
atl1c_hw_set_mac_addr(&adapter->hw, adapter->hw.mac_addr);
@@@ -983,11 -982,9 +982,9 @@@ static int atl1c_setup_ring_resources(s size = sizeof(struct atl1c_buffer) * (tpd_ring->count * 2 + rfd_ring->count); tpd_ring->buffer_info = kzalloc(size, GFP_KERNEL); - if (unlikely(!tpd_ring->buffer_info)) { - dev_err(&pdev->dev, "kzalloc failed, size = %d\n", - size); + if (unlikely(!tpd_ring->buffer_info)) goto err_nomem; - } + for (i = 0; i < AT_MAX_TRANSMIT_QUEUE; i++) { tpd_ring[i].buffer_info = (tpd_ring->buffer_info + count); @@@ -1652,7 -1649,6 +1649,7 @@@ static int atl1c_alloc_rx_buffer(struc u16 num_alloc = 0; u16 rfd_next_to_use, next_next; struct atl1c_rx_free_desc *rfd_desc; + dma_addr_t mapping;
next_next = rfd_next_to_use = rfd_ring->next_to_use; if (++next_next == rfd_ring->count) @@@ -1679,18 -1675,9 +1676,18 @@@ ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY); buffer_info->skb = skb; buffer_info->length = adapter->rx_buffer_len; - buffer_info->dma = pci_map_single(pdev, vir_addr, + mapping = pci_map_single(pdev, vir_addr, buffer_info->length, PCI_DMA_FROMDEVICE); + if (unlikely(pci_dma_mapping_error(pdev, mapping))) { + dev_kfree_skb(skb); + buffer_info->skb = NULL; + buffer_info->length = 0; + ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_FREE); + netif_warn(adapter, rx_err, adapter->netdev, "RX pci_map_single failed"); + break; + } + buffer_info->dma = mapping; ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_SINGLE, ATL1C_PCIMAP_FROMDEVICE); rfd_desc->buffer_addr = cpu_to_le64(buffer_info->dma); @@@ -2025,29 -2012,7 +2022,29 @@@ check_sum return 0; }
-static void atl1c_tx_map(struct atl1c_adapter *adapter, +static void atl1c_tx_rollback(struct atl1c_adapter *adpt, + struct atl1c_tpd_desc *first_tpd, + enum atl1c_trans_queue type) +{ + struct atl1c_tpd_ring *tpd_ring = &adpt->tpd_ring[type]; + struct atl1c_buffer *buffer_info; + struct atl1c_tpd_desc *tpd; + u16 first_index, index; + + first_index = first_tpd - (struct atl1c_tpd_desc *)tpd_ring->desc; + index = first_index; + while (index != tpd_ring->next_to_use) { + tpd = ATL1C_TPD_DESC(tpd_ring, index); + buffer_info = &tpd_ring->buffer_info[index]; + atl1c_clean_buffer(adpt->pdev, buffer_info, 0); + memset(tpd, 0, sizeof(struct atl1c_tpd_desc)); + if (++index == tpd_ring->count) + index = 0; + } + tpd_ring->next_to_use = first_index; +} + +static int atl1c_tx_map(struct atl1c_adapter *adapter, struct sk_buff *skb, struct atl1c_tpd_desc *tpd, enum atl1c_trans_queue type) { @@@ -2072,10 -2037,7 +2069,10 @@@ buffer_info->length = map_len; buffer_info->dma = pci_map_single(adapter->pdev, skb->data, hdr_len, PCI_DMA_TODEVICE); - ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY); + if (unlikely(pci_dma_mapping_error(adapter->pdev, + buffer_info->dma))) + goto err_dma; + ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_SINGLE, ATL1C_PCIMAP_TODEVICE); mapped_len += map_len; @@@ -2097,10 -2059,6 +2094,10 @@@ buffer_info->dma = pci_map_single(adapter->pdev, skb->data + mapped_len, buffer_info->length, PCI_DMA_TODEVICE); + if (unlikely(pci_dma_mapping_error(adapter->pdev, + buffer_info->dma))) + goto err_dma; + ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY); ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_SINGLE, ATL1C_PCIMAP_TODEVICE); @@@ -2122,9 -2080,6 +2119,9 @@@ frag, 0, buffer_info->length, DMA_TO_DEVICE); + if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma)) + goto err_dma; + ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY); ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_PAGE, ATL1C_PCIMAP_TODEVICE); @@@ -2137,13 -2092,6 +2134,13 @@@ /* The last buffer info contain the skb address, so it will be free after unmap */ buffer_info->skb = skb; + + return 0; + +err_dma: + buffer_info->dma = 0; + buffer_info->length = 0; + return -1; }
static void atl1c_tx_queue(struct atl1c_adapter *adapter, struct sk_buff *skb, @@@ -2206,18 -2154,10 +2203,18 @@@ static netdev_tx_t atl1c_xmit_frame(str if (skb_network_offset(skb) != ETH_HLEN) tpd->word1 |= 1 << TPD_ETH_TYPE_SHIFT; /* Ethernet frame */
- atl1c_tx_map(adapter, skb, tpd, type); - atl1c_tx_queue(adapter, skb, tpd, type); + if (atl1c_tx_map(adapter, skb, tpd, type) < 0) { + netif_info(adapter, tx_done, adapter->netdev, + "tx-skb droppted due to dma error\n"); + /* roll back tpd/buffer */ + atl1c_tx_rollback(adapter, tpd, type); + spin_unlock_irqrestore(&adapter->tx_lock, flags); + dev_kfree_skb(skb); + } else { + atl1c_tx_queue(adapter, skb, tpd, type); + spin_unlock_irqrestore(&adapter->tx_lock, flags); + }
- spin_unlock_irqrestore(&adapter->tx_lock, flags); return NETDEV_TX_OK; }
@@@ -2597,10 -2537,9 +2594,9 @@@ static int atl1c_probe(struct pci_dev * } if (atl1c_read_mac_addr(&adapter->hw)) { /* got a random MAC address, set NET_ADDR_RANDOM to netdev */ - netdev->addr_assign_type |= NET_ADDR_RANDOM; + netdev->addr_assign_type = NET_ADDR_RANDOM; } memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); - memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len); if (netif_msg_probe(adapter)) dev_dbg(&pdev->dev, "mac address : %pM\n", adapter->hw.mac_addr); diff --combined drivers/net/ethernet/cadence/macb.c index b9d4bb9,352190b..7903943 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c @@@ -287,7 -287,7 +287,7 @@@ static int macb_mii_probe(struct net_de }
/* attach the mac to the phy */ - ret = phy_connect_direct(dev, phydev, &macb_handle_link_change, 0, + ret = phy_connect_direct(dev, phydev, &macb_handle_link_change, bp->phy_interface); if (ret) { netdev_err(dev, "Could not attach to PHY\n"); @@@ -693,11 -693,6 +693,11 @@@ static int macb_poll(struct napi_struc * get notified when new packets arrive. */ macb_writel(bp, IER, MACB_RX_INT_FLAGS); + + /* Packets received while interrupts were disabled */ + status = macb_readl(bp, RSR); + if (unlikely(status)) + napi_reschedule(napi); }
/* TODO: Handle errors */ diff --combined drivers/net/ethernet/freescale/fec_mpc52xx.c index 85e776d,7f91b0c..77943a6 --- a/drivers/net/ethernet/freescale/fec_mpc52xx.c +++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c @@@ -29,6 -29,7 +29,7 @@@ #include <linux/delay.h> #include <linux/of_device.h> #include <linux/of_mdio.h> + #include <linux/of_net.h> #include <linux/of_platform.h>
#include <linux/netdevice.h> @@@ -40,8 -41,8 +41,8 @@@ #include <asm/delay.h> #include <asm/mpc52xx.h>
-#include <sysdev/bestcomm/bestcomm.h> -#include <sysdev/bestcomm/fec.h> +#include <linux/fsl/bestcomm/bestcomm.h> +#include <linux/fsl/bestcomm/fec.h>
#include "fec_mpc52xx.h"
@@@ -76,10 -77,6 +77,6 @@@ static void mpc52xx_fec_stop(struct net static void mpc52xx_fec_start(struct net_device *dev); static void mpc52xx_fec_reset(struct net_device *dev);
- static u8 mpc52xx_fec_mac_addr[6]; - module_param_array_named(mac, mpc52xx_fec_mac_addr, byte, NULL, 0); - MODULE_PARM_DESC(mac, "six hex digits, ie. 0x1,0x2,0xc0,0x01,0xba,0xbe"); - #define MPC52xx_MESSAGES_DEFAULT ( NETIF_MSG_DRV | NETIF_MSG_PROBE | \ NETIF_MSG_LINK | NETIF_MSG_IFDOWN | NETIF_MSG_IFUP) static int debug = -1; /* the above default */ @@@ -110,15 -107,6 +107,6 @@@ static void mpc52xx_fec_set_paddr(struc out_be32(&fec->paddr2, (*(u16 *)(&mac[4]) << 16) | FEC_PADDR2_TYPE); }
- static void mpc52xx_fec_get_paddr(struct net_device *dev, u8 *mac) - { - struct mpc52xx_fec_priv *priv = netdev_priv(dev); - struct mpc52xx_fec __iomem *fec = priv->fec; - - *(u32 *)(&mac[0]) = in_be32(&fec->paddr1); - *(u16 *)(&mac[4]) = in_be32(&fec->paddr2) >> 16; - } - static int mpc52xx_fec_set_mac_address(struct net_device *dev, void *addr) { struct sockaddr *sock = addr; @@@ -853,6 -841,8 +841,8 @@@ static int mpc52xx_fec_probe(struct pla struct resource mem; const u32 *prop; int prop_size; + struct device_node *np = op->dev.of_node; + const char *mac_addr;
phys_addr_t rx_fifo; phys_addr_t tx_fifo; @@@ -866,7 -856,7 +856,7 @@@ priv->ndev = ndev;
/* Reserve FEC control zone */ - rv = of_address_to_resource(op->dev.of_node, 0, &mem); + rv = of_address_to_resource(np, 0, &mem); if (rv) { printk(KERN_ERR DRIVER_NAME ": " "Error while parsing device node resource\n" ); @@@ -919,7 -909,7 +909,7 @@@
/* Get the IRQ we need one by one */ /* Control */ - ndev->irq = irq_of_parse_and_map(op->dev.of_node, 0); + ndev->irq = irq_of_parse_and_map(np, 0);
/* RX */ priv->r_irq = bcom_get_task_irq(priv->rx_dmatsk); @@@ -927,11 -917,33 +917,33 @@@ /* TX */ priv->t_irq = bcom_get_task_irq(priv->tx_dmatsk);
- /* MAC address init */ - if (!is_zero_ether_addr(mpc52xx_fec_mac_addr)) - memcpy(ndev->dev_addr, mpc52xx_fec_mac_addr, 6); - else - mpc52xx_fec_get_paddr(ndev, ndev->dev_addr); + /* + * MAC address init: + * + * First try to read MAC address from DT + */ + mac_addr = of_get_mac_address(np); + if (mac_addr) { + memcpy(ndev->dev_addr, mac_addr, ETH_ALEN); + } else { + struct mpc52xx_fec __iomem *fec = priv->fec; + + /* + * If the MAC addresse is not provided via DT then read + * it back from the controller regs + */ + *(u32 *)(&ndev->dev_addr[0]) = in_be32(&fec->paddr1); + *(u16 *)(&ndev->dev_addr[4]) = in_be32(&fec->paddr2) >> 16; + } + + /* + * Check if the MAC address is valid, if not get a random one + */ + if (!is_valid_ether_addr(ndev->dev_addr)) { + eth_hw_addr_random(ndev); + dev_warn(&ndev->dev, "using random MAC address %pM\n", + ndev->dev_addr); + }
priv->msg_enable = netif_msg_init(debug, MPC52xx_MESSAGES_DEFAULT);
@@@ -942,20 -954,20 +954,20 @@@ /* Start with safe defaults for link connection */ priv->speed = 100; priv->duplex = DUPLEX_HALF; - priv->mdio_speed = ((mpc5xxx_get_bus_frequency(op->dev.of_node) >> 20) / 5) << 1; + priv->mdio_speed = ((mpc5xxx_get_bus_frequency(np) >> 20) / 5) << 1;
/* The current speed preconfigures the speed of the MII link */ - prop = of_get_property(op->dev.of_node, "current-speed", &prop_size); + prop = of_get_property(np, "current-speed", &prop_size); if (prop && (prop_size >= sizeof(u32) * 2)) { priv->speed = prop[0]; priv->duplex = prop[1] ? DUPLEX_FULL : DUPLEX_HALF; }
/* If there is a phy handle, then get the PHY node */ - priv->phy_node = of_parse_phandle(op->dev.of_node, "phy-handle", 0); + priv->phy_node = of_parse_phandle(np, "phy-handle", 0);
/* the 7-wire property means don't use MII mode */ - if (of_find_property(op->dev.of_node, "fsl,7-wire-mode", NULL)) { + if (of_find_property(np, "fsl,7-wire-mode", NULL)) { priv->seven_wire_mode = 1; dev_info(&ndev->dev, "using 7-wire PHY mode\n"); } @@@ -970,6 -982,8 +982,8 @@@
/* We're done ! */ dev_set_drvdata(&op->dev, ndev); + printk(KERN_INFO "%s: %s MAC %pM\n", + ndev->name, op->dev.of_node->full_name, ndev->dev_addr);
return 0;
diff --combined drivers/s390/net/qeth_core.h index b4796a4,d690b33..d87961d --- a/drivers/s390/net/qeth_core.h +++ b/drivers/s390/net/qeth_core.h @@@ -678,6 -678,7 +678,7 @@@ struct qeth_card_options int performance_stats; int rx_sg_cb; enum qeth_ipa_isolation_modes isolation; + enum qeth_ipa_isolation_modes prev_isolation; int sniffer; enum qeth_cq cq; char hsuid[9]; @@@ -789,6 -790,7 +790,7 @@@ struct qeth_card struct qeth_rx rx; struct delayed_work buffer_reclaim_work; int reclaim_index; + struct work_struct close_dev_work; };
struct qeth_card_list_struct { @@@ -816,7 -818,7 +818,7 @@@ static inline struct qeth_card *CARD_FR
static inline int qeth_get_micros(void) { - return (int) (get_clock() >> 12); + return (int) (get_tod_clock() >> 12); }
static inline int qeth_get_ip_version(struct sk_buff *skb) @@@ -909,9 -911,6 +911,6 @@@ struct qeth_cmd_buffer *qeth_wait_for_b int qeth_mdio_read(struct net_device *, int, int); int qeth_snmp_command(struct qeth_card *, char __user *); int qeth_query_oat_command(struct qeth_card *, char __user *); - struct qeth_cmd_buffer *qeth_get_adapter_cmd(struct qeth_card *, __u32, __u32); - int qeth_default_setadapterparms_cb(struct qeth_card *, struct qeth_reply *, - unsigned long); int qeth_send_control_data(struct qeth_card *, int, struct qeth_cmd_buffer *, int (*reply_cb)(struct qeth_card *, struct qeth_reply*, unsigned long), void *reply_param); @@@ -928,12 -927,13 +927,13 @@@ void qeth_core_get_strings(struct net_d void qeth_core_get_drvinfo(struct net_device *, struct ethtool_drvinfo *); void qeth_dbf_longtext(debug_info_t *id, int level, char *text, ...); int qeth_core_ethtool_get_settings(struct net_device *, struct ethtool_cmd *); - int qeth_set_access_ctrl_online(struct qeth_card *card); + int qeth_set_access_ctrl_online(struct qeth_card *card, int fallback); int qeth_hdr_chk_and_bounce(struct sk_buff *, int); int qeth_configure_cq(struct qeth_card *, enum qeth_cq); int qeth_hw_trap(struct qeth_card *, enum qeth_diags_trap_action); int qeth_query_ipassists(struct qeth_card *, enum qeth_prot_versions prot); void qeth_trace_features(struct qeth_card *); + void qeth_close_dev(struct qeth_card *);
/* exports for OSN */ int qeth_osn_assist(struct net_device *, void *, int); diff --combined net/batman-adv/distributed-arp-table.c index 5539215,ea0bd31..761a590 --- a/net/batman-adv/distributed-arp-table.c +++ b/net/batman-adv/distributed-arp-table.c @@@ -1,4 -1,4 +1,4 @@@ - /* Copyright (C) 2011-2012 B.A.T.M.A.N. contributors: + /* Copyright (C) 2011-2013 B.A.T.M.A.N. contributors: * * Antonio Quartulli * @@@ -440,7 -440,7 +440,7 @@@ static bool batadv_is_orig_node_eligibl /* this is an hash collision with the temporary selected node. Choose * the one with the lowest address */ - if ((tmp_max == max) && + if ((tmp_max == max) && max_orig_node && (batadv_compare_eth(candidate->orig, max_orig_node->orig) > 0)) goto out;
diff --combined net/ipv4/tcp.c index 035663d,1f0bedb..7546953 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@@ -400,6 -400,8 +400,8 @@@ void tcp_init_sock(struct sock *sk tcp_enable_early_retrans(tp); icsk->icsk_ca_ops = &tcp_init_congestion_ops;
+ tp->tsoffset = 0; + sk->sk_state = TCP_CLOSE;
sk->sk_write_space = sk_stream_write_space; @@@ -895,6 -897,7 +897,7 @@@ new_segment get_page(page); skb_fill_page_desc(skb, i, page, offset, copy); } + skb_shinfo(skb)->tx_flags |= SKBTX_SHARED_FRAG;
skb->len += copy; skb->data_len += copy; @@@ -1406,10 -1409,10 +1409,10 @@@ static void tcp_service_net_dma(struct return;
last_issued = tp->ucopy.dma_cookie; - dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + dma_async_issue_pending(tp->ucopy.dma_chan);
do { - if (dma_async_memcpy_complete(tp->ucopy.dma_chan, + if (dma_async_is_tx_complete(tp->ucopy.dma_chan, last_issued, &done, &used) == DMA_SUCCESS) { /* Safe to free early-copied skbs now */ @@@ -1751,7 -1754,7 +1754,7 @@@ int tcp_recvmsg(struct kiocb *iocb, str tcp_service_net_dma(sk, true); tcp_cleanup_rbuf(sk, copied); } else - dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + dma_async_issue_pending(tp->ucopy.dma_chan); } #endif if (copied >= target) { @@@ -1844,7 -1847,7 +1847,7 @@@ do_prequeue break; }
- dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + dma_async_issue_pending(tp->ucopy.dma_chan);
if ((offset + used) == skb->len) copied_early = true; @@@ -2287,7 -2290,6 +2290,6 @@@ int tcp_disconnect(struct sock *sk, in tp->packets_out = 0; tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; tp->snd_cwnd_cnt = 0; - tp->bytes_acked = 0; tp->window_clamp = 0; tcp_set_ca_state(sk, TCP_CA_Open); tcp_clear_retrans(tp); @@@ -2711,6 -2713,12 +2713,12 @@@ static int do_tcp_setsockopt(struct soc else err = -EINVAL; break; + case TCP_TIMESTAMP: + if (!tp->repair) + err = -EPERM; + else + tp->tsoffset = val - tcp_time_stamp; + break; default: err = -ENOPROTOOPT; break; @@@ -2959,6 -2967,9 +2967,9 @@@ static int do_tcp_getsockopt(struct soc case TCP_USER_TIMEOUT: val = jiffies_to_msecs(icsk->icsk_user_timeout); break; + case TCP_TIMESTAMP: + val = tcp_time_stamp + tp->tsoffset; + break; default: return -ENOPROTOOPT; } @@@ -3243,7 -3254,7 +3254,7 @@@ __tcp_alloc_md5sig_pool(struct sock *sk struct crypto_hash *hash;
hash = crypto_alloc_hash("md5", 0, CRYPTO_ALG_ASYNC); - if (!hash || IS_ERR(hash)) + if (IS_ERR_OR_NULL(hash)) goto out_free;
per_cpu_ptr(pool, cpu)->md5_desc.tfm = hash;