Fix Odroid N2, add upstream patches for rockchip-default
Signed-off-by: Igor Pecovnik <igor.pecovnik@gmail.com>
This commit is contained in:
parent
1221d59233
commit
2f84cff50e
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.9.182 Kernel Configuration
|
||||
# Linux/arm64 4.9.190 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
@ -250,10 +250,11 @@ CONFIG_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_GCC_PLUGINS=y
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
# CONFIG_CC_STACKPROTECTOR is not set
|
||||
# CONFIG_CC_STACKPROTECTOR_NONE is not set
|
||||
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
|
||||
CONFIG_CC_STACKPROTECTOR_STRONG=y
|
||||
# CONFIG_CC_STACKPROTECTOR_STRONG_AMLOGIC is not set
|
||||
# CONFIG_LTO is not set
|
||||
CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
|
||||
CONFIG_LTO_NONE=y
|
||||
@ -1418,6 +1419,7 @@ CONFIG_AMLOGIC_SERIAL_MESON_CONSOLE=y
|
||||
# CONFIG_AMLOGIC_PRINTK_NOBLOCK_MODE is not set
|
||||
CONFIG_AMLOGIC_IOMAP=y
|
||||
CONFIG_AMLOGIC_PINCTRL=y
|
||||
# CONFIG_AMLOGIC_PINCTRL_MESON_GXBB is not set
|
||||
CONFIG_AMLOGIC_PINCTRL_MESON_GXL=y
|
||||
CONFIG_AMLOGIC_PINCTRL_MESON_AXG=y
|
||||
CONFIG_AMLOGIC_PINCTRL_MESON_TXLX=y
|
||||
@ -1664,6 +1666,11 @@ CONFIG_AMLOGIC_IONVIDEO=y
|
||||
#
|
||||
CONFIG_AMLOGIC_PIC_DEC=y
|
||||
|
||||
#
|
||||
# Amlogic videosync support
|
||||
#
|
||||
CONFIG_AMLOGIC_VIDEOSYNC=y
|
||||
|
||||
#
|
||||
# Amlogic Enhancement drivers
|
||||
#
|
||||
@ -1686,6 +1693,15 @@ CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_VECM=y
|
||||
# Amlogic amdolby_vision Driver
|
||||
#
|
||||
# CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION is not set
|
||||
|
||||
#
|
||||
# Amlogic amprime_sl Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Amlogic amprime_sl Driver
|
||||
#
|
||||
# CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_PRIME_SL is not set
|
||||
CONFIG_AMLOGIC_MEDIA_GDC=y
|
||||
|
||||
#
|
||||
@ -1787,11 +1803,12 @@ CONFIG_AMLOGIC_ESM=y
|
||||
#
|
||||
# DVB COMPAT support
|
||||
#
|
||||
# CONFIG_AMLOGIC_POWER is not set
|
||||
|
||||
#
|
||||
# Multimedia Card support
|
||||
#
|
||||
CONFIG_AMLOGIC_IRBLASTER=y
|
||||
# CONFIG_AMLOGIC_IRBLASTER_CORE is not set
|
||||
CONFIG_AMLOGIC_IIO=y
|
||||
|
||||
#
|
||||
@ -1811,13 +1828,16 @@ CONFIG_AMLOGIC_MEMORY_EXTEND=y
|
||||
CONFIG_AMLOGIC_RAMDUMP=y
|
||||
CONFIG_AMLOGIC_CMA=y
|
||||
# CONFIG_AMLOGIC_VMAP is not set
|
||||
# CONFIG_AMLOGIC_WATCHPOINT is not set
|
||||
CONFIG_AMLOGIC_GPIO_IRQ=y
|
||||
|
||||
#
|
||||
# Amlogic ATV driver
|
||||
#
|
||||
CONFIG_AMLOGIC_ATV_DEMOD=y
|
||||
# CONFIG_AMLOGIC_DEBUG is not set
|
||||
# CONFIG_AMLOGIC_ATV_DEMOD is not set
|
||||
CONFIG_AMLOGIC_DEBUG=y
|
||||
CONFIG_AMLOGIC_DEBUG_LOCKUP=y
|
||||
# CONFIG_AMLOGIC_DEBUG_ATRACE is not set
|
||||
|
||||
#
|
||||
# Amlogic defend img file update support
|
||||
@ -2607,28 +2627,30 @@ CONFIG_MOUSE_PS2_FOCALTECH=y
|
||||
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
|
||||
# CONFIG_MOUSE_SYNAPTICS_USB is not set
|
||||
CONFIG_INPUT_JOYSTICK=y
|
||||
# CONFIG_JOYSTICK_ANALOG is not set
|
||||
# CONFIG_JOYSTICK_A3D is not set
|
||||
# CONFIG_JOYSTICK_ADI is not set
|
||||
# CONFIG_JOYSTICK_COBRA is not set
|
||||
# CONFIG_JOYSTICK_GF2K is not set
|
||||
# CONFIG_JOYSTICK_GRIP is not set
|
||||
# CONFIG_JOYSTICK_GRIP_MP is not set
|
||||
# CONFIG_JOYSTICK_GUILLEMOT is not set
|
||||
# CONFIG_JOYSTICK_INTERACT is not set
|
||||
# CONFIG_JOYSTICK_SIDEWINDER is not set
|
||||
# CONFIG_JOYSTICK_TMDC is not set
|
||||
# CONFIG_JOYSTICK_IFORCE is not set
|
||||
# CONFIG_JOYSTICK_WARRIOR is not set
|
||||
# CONFIG_JOYSTICK_MAGELLAN is not set
|
||||
# CONFIG_JOYSTICK_SPACEORB is not set
|
||||
# CONFIG_JOYSTICK_SPACEBALL is not set
|
||||
# CONFIG_JOYSTICK_STINGER is not set
|
||||
# CONFIG_JOYSTICK_TWIDJOY is not set
|
||||
# CONFIG_JOYSTICK_ZHENHUA is not set
|
||||
# CONFIG_JOYSTICK_AS5011 is not set
|
||||
# CONFIG_JOYSTICK_JOYDUMP is not set
|
||||
CONFIG_JOYSTICK_XPAD=y
|
||||
CONFIG_JOYSTICK_ANALOG=m
|
||||
CONFIG_JOYSTICK_A3D=m
|
||||
CONFIG_JOYSTICK_ADI=m
|
||||
CONFIG_JOYSTICK_COBRA=m
|
||||
CONFIG_JOYSTICK_GF2K=m
|
||||
CONFIG_JOYSTICK_GRIP=m
|
||||
CONFIG_JOYSTICK_GRIP_MP=m
|
||||
CONFIG_JOYSTICK_GUILLEMOT=m
|
||||
CONFIG_JOYSTICK_INTERACT=m
|
||||
CONFIG_JOYSTICK_SIDEWINDER=m
|
||||
CONFIG_JOYSTICK_TMDC=m
|
||||
CONFIG_JOYSTICK_IFORCE=m
|
||||
CONFIG_JOYSTICK_IFORCE_USB=y
|
||||
CONFIG_JOYSTICK_IFORCE_232=y
|
||||
CONFIG_JOYSTICK_WARRIOR=m
|
||||
CONFIG_JOYSTICK_MAGELLAN=m
|
||||
CONFIG_JOYSTICK_SPACEORB=m
|
||||
CONFIG_JOYSTICK_SPACEBALL=m
|
||||
CONFIG_JOYSTICK_STINGER=m
|
||||
CONFIG_JOYSTICK_TWIDJOY=m
|
||||
CONFIG_JOYSTICK_ZHENHUA=m
|
||||
CONFIG_JOYSTICK_AS5011=m
|
||||
CONFIG_JOYSTICK_JOYDUMP=m
|
||||
CONFIG_JOYSTICK_XPAD=m
|
||||
CONFIG_JOYSTICK_XPAD_FF=y
|
||||
CONFIG_JOYSTICK_XPAD_LEDS=y
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
@ -2737,7 +2759,9 @@ CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_ARC_PS2 is not set
|
||||
# CONFIG_SERIO_APBPS2 is not set
|
||||
# CONFIG_USERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_GAMEPORT=m
|
||||
# CONFIG_GAMEPORT_NS558 is not set
|
||||
# CONFIG_GAMEPORT_L4 is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
@ -3331,7 +3355,7 @@ CONFIG_MFD_SYSCON=y
|
||||
# CONFIG_MFD_TPS80031 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_TWL6040_CORE is not set
|
||||
CONFIG_MFD_WL1273_CORE=m
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
# CONFIG_MFD_LM3533 is not set
|
||||
# CONFIG_MFD_TC3589X is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
@ -3417,6 +3441,7 @@ CONFIG_DVB_MAX_ADAPTERS=8
|
||||
CONFIG_RC_CORE=y
|
||||
CONFIG_RC_MAP=y
|
||||
CONFIG_RC_DECODERS=y
|
||||
CONFIG_IR_IRMP_DECODER=y
|
||||
CONFIG_LIRC=m
|
||||
CONFIG_IR_LIRC_CODEC=m
|
||||
CONFIG_IR_NEC_DECODER=m
|
||||
@ -3430,16 +3455,16 @@ CONFIG_IR_MCE_KBD_DECODER=m
|
||||
CONFIG_IR_XMP_DECODER=m
|
||||
CONFIG_RC_DEVICES=y
|
||||
CONFIG_RC_ATI_REMOTE=m
|
||||
CONFIG_IR_HIX5HD2=m
|
||||
CONFIG_IR_IMON=m
|
||||
CONFIG_IR_MCEUSB=m
|
||||
# CONFIG_IR_HIX5HD2 is not set
|
||||
# CONFIG_IR_IMON is not set
|
||||
# CONFIG_IR_MCEUSB is not set
|
||||
CONFIG_IR_MESON=m
|
||||
CONFIG_IR_REDRAT3=m
|
||||
CONFIG_IR_STREAMZAP=m
|
||||
CONFIG_IR_IGORPLUGUSB=m
|
||||
CONFIG_IR_IGUANA=m
|
||||
CONFIG_IR_TTUSBIR=m
|
||||
CONFIG_RC_LOOPBACK=m
|
||||
# CONFIG_IR_REDRAT3 is not set
|
||||
# CONFIG_IR_STREAMZAP is not set
|
||||
# CONFIG_IR_IGORPLUGUSB is not set
|
||||
# CONFIG_IR_IGUANA is not set
|
||||
# CONFIG_IR_TTUSBIR is not set
|
||||
# CONFIG_RC_LOOPBACK is not set
|
||||
CONFIG_IR_GPIO_CIR=m
|
||||
CONFIG_IR_GPIOPLUG_CIR=m
|
||||
CONFIG_IR_HK_LIRC_HELPER=y
|
||||
@ -3515,7 +3540,7 @@ CONFIG_VIDEO_USBTV=m
|
||||
CONFIG_VIDEO_PVRUSB2=m
|
||||
CONFIG_VIDEO_PVRUSB2_SYSFS=y
|
||||
CONFIG_VIDEO_PVRUSB2_DVB=y
|
||||
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
|
||||
CONFIG_VIDEO_PVRUSB2_DEBUGIFC=y
|
||||
CONFIG_VIDEO_HDPVR=m
|
||||
CONFIG_VIDEO_USBVISION=m
|
||||
CONFIG_VIDEO_STK1160_COMMON=m
|
||||
@ -3544,7 +3569,7 @@ CONFIG_VIDEO_TM6000_DVB=m
|
||||
# Digital TV USB devices
|
||||
#
|
||||
CONFIG_DVB_USB=m
|
||||
# CONFIG_DVB_USB_DEBUG is not set
|
||||
CONFIG_DVB_USB_DEBUG=y
|
||||
CONFIG_DVB_USB_DIB3000MC=m
|
||||
CONFIG_DVB_USB_A800=m
|
||||
CONFIG_DVB_USB_DIBUSB_MB=m
|
||||
@ -3614,24 +3639,19 @@ CONFIG_USB_MSI2500=m
|
||||
#
|
||||
# CONFIG_SMS_SDIO_DRV is not set
|
||||
CONFIG_RADIO_ADAPTERS=y
|
||||
CONFIG_RADIO_TEA575X=m
|
||||
CONFIG_RADIO_SI470X=y
|
||||
CONFIG_USB_SI470X=y
|
||||
CONFIG_RADIO_SI4713=m
|
||||
CONFIG_USB_SI4713=m
|
||||
CONFIG_PLATFORM_SI4713=m
|
||||
CONFIG_I2C_SI4713=m
|
||||
CONFIG_USB_MR800=m
|
||||
CONFIG_USB_DSBR=m
|
||||
CONFIG_RADIO_SHARK=m
|
||||
CONFIG_RADIO_SHARK2=m
|
||||
CONFIG_USB_KEENE=m
|
||||
CONFIG_USB_RAREMONO=m
|
||||
CONFIG_USB_MA901=m
|
||||
CONFIG_RADIO_TEA5764=m
|
||||
CONFIG_RADIO_SAA7706H=m
|
||||
CONFIG_RADIO_TEF6862=m
|
||||
CONFIG_RADIO_WL1273=m
|
||||
# CONFIG_RADIO_SI470X is not set
|
||||
# CONFIG_RADIO_SI4713 is not set
|
||||
# CONFIG_USB_MR800 is not set
|
||||
# CONFIG_USB_DSBR is not set
|
||||
# CONFIG_RADIO_SHARK is not set
|
||||
# CONFIG_RADIO_SHARK2 is not set
|
||||
# CONFIG_USB_KEENE is not set
|
||||
# CONFIG_USB_RAREMONO is not set
|
||||
# CONFIG_USB_MA901 is not set
|
||||
# CONFIG_RADIO_TEA5764 is not set
|
||||
# CONFIG_RADIO_SAA7706H is not set
|
||||
# CONFIG_RADIO_TEF6862 is not set
|
||||
# CONFIG_RADIO_WL1273 is not set
|
||||
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
@ -3994,29 +4014,25 @@ CONFIG_DUMMY_CONSOLE_ROWS=25
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
CONFIG_LOGO_LINUX_CLUT224=y
|
||||
CONFIG_LOGO_ARMBIAN_CLUT224=y
|
||||
# CONFIG_LOGO is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SOUND_OSS_CORE=y
|
||||
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_TIMER=y
|
||||
CONFIG_SND_PCM=y
|
||||
CONFIG_SND_HWDEP=m
|
||||
CONFIG_SND_HWDEP=y
|
||||
CONFIG_SND_RAWMIDI=y
|
||||
CONFIG_SND_JACK=y
|
||||
CONFIG_SND_JACK_INPUT_DEV=y
|
||||
CONFIG_SND_SEQUENCER=m
|
||||
CONFIG_SND_SEQ_DUMMY=m
|
||||
CONFIG_SND_SEQUENCER=y
|
||||
# CONFIG_SND_SEQ_DUMMY is not set
|
||||
CONFIG_SND_OSSEMUL=y
|
||||
CONFIG_SND_MIXER_OSS=m
|
||||
CONFIG_SND_PCM_OSS=m
|
||||
CONFIG_SND_PCM_OSS_PLUGINS=y
|
||||
CONFIG_SND_PCM_TIMER=y
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
# CONFIG_SND_SEQUENCER_OSS is not set
|
||||
CONFIG_SND_HRTIMER=m
|
||||
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
|
||||
CONFIG_SND_DYNAMIC_MINORS=y
|
||||
@ -4027,7 +4043,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
|
||||
# CONFIG_SND_VERBOSE_PRINTK is not set
|
||||
# CONFIG_SND_DEBUG is not set
|
||||
CONFIG_SND_VMASTER=y
|
||||
CONFIG_SND_RAWMIDI_SEQ=m
|
||||
CONFIG_SND_RAWMIDI_SEQ=y
|
||||
# CONFIG_SND_OPL3_LIB_SEQ is not set
|
||||
# CONFIG_SND_OPL4_LIB_SEQ is not set
|
||||
# CONFIG_SND_SBAWE_SEQ is not set
|
||||
@ -4049,7 +4065,7 @@ CONFIG_SND_MPU401=m
|
||||
CONFIG_SND_HDA_PREALLOC_SIZE=64
|
||||
CONFIG_SND_SPI=y
|
||||
CONFIG_SND_USB=y
|
||||
CONFIG_SND_USB_AUDIO=m
|
||||
CONFIG_SND_USB_AUDIO=y
|
||||
CONFIG_SND_USB_UA101=m
|
||||
CONFIG_SND_USB_CAIAQ=m
|
||||
CONFIG_SND_USB_CAIAQ_INPUT=y
|
||||
@ -4062,7 +4078,6 @@ CONFIG_SND_USB_PODHD=m
|
||||
CONFIG_SND_USB_TONEPORT=m
|
||||
CONFIG_SND_USB_VARIAX=m
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_SND_SOC_AC97_BUS=y
|
||||
# CONFIG_SND_SOC_AMD_ACP is not set
|
||||
# CONFIG_SND_ATMEL_SOC is not set
|
||||
# CONFIG_SND_DESIGNWARE_I2S is not set
|
||||
@ -4087,98 +4102,86 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
#
|
||||
# CODEC drivers
|
||||
#
|
||||
CONFIG_SND_SOC_AC97_CODEC=m
|
||||
CONFIG_SND_SOC_ADAU1701=m
|
||||
CONFIG_SND_SOC_ADAU7002=m
|
||||
CONFIG_SND_SOC_AK4104=m
|
||||
CONFIG_SND_SOC_AK4554=m
|
||||
CONFIG_SND_SOC_AK4613=m
|
||||
CONFIG_SND_SOC_AK4642=m
|
||||
CONFIG_SND_SOC_AK5386=m
|
||||
CONFIG_SND_SOC_ALC5623=m
|
||||
CONFIG_SND_SOC_BT_SCO=m
|
||||
CONFIG_SND_SOC_CS35L32=m
|
||||
CONFIG_SND_SOC_CS35L33=m
|
||||
CONFIG_SND_SOC_CS42L51=m
|
||||
CONFIG_SND_SOC_CS42L51_I2C=m
|
||||
CONFIG_SND_SOC_CS42L52=m
|
||||
CONFIG_SND_SOC_CS42L56=m
|
||||
CONFIG_SND_SOC_CS42L73=m
|
||||
CONFIG_SND_SOC_CS4265=m
|
||||
CONFIG_SND_SOC_CS4270=m
|
||||
CONFIG_SND_SOC_CS4271=m
|
||||
CONFIG_SND_SOC_CS4271_I2C=m
|
||||
CONFIG_SND_SOC_CS4271_SPI=m
|
||||
CONFIG_SND_SOC_CS42XX8=m
|
||||
CONFIG_SND_SOC_CS42XX8_I2C=m
|
||||
CONFIG_SND_SOC_CS4349=m
|
||||
CONFIG_SND_SOC_CS53L30=m
|
||||
CONFIG_SND_SOC_ES8328=m
|
||||
CONFIG_SND_SOC_GTM601=m
|
||||
CONFIG_SND_SOC_INNO_RK3036=m
|
||||
CONFIG_SND_SOC_MAX98504=m
|
||||
CONFIG_SND_SOC_MAX9860=m
|
||||
CONFIG_SND_SOC_PCM1681=m
|
||||
CONFIG_SND_SOC_PCM179X=m
|
||||
CONFIG_SND_SOC_PCM179X_I2C=m
|
||||
CONFIG_SND_SOC_PCM179X_SPI=m
|
||||
CONFIG_SND_SOC_PCM3168A=m
|
||||
CONFIG_SND_SOC_PCM3168A_I2C=m
|
||||
CONFIG_SND_SOC_PCM3168A_SPI=m
|
||||
CONFIG_SND_SOC_PCM512x=m
|
||||
CONFIG_SND_SOC_PCM512x_I2C=m
|
||||
CONFIG_SND_SOC_PCM512x_SPI=m
|
||||
CONFIG_SND_SOC_RL6231=m
|
||||
CONFIG_SND_SOC_RT5616=m
|
||||
CONFIG_SND_SOC_RT5631=m
|
||||
# CONFIG_SND_SOC_AC97_CODEC is not set
|
||||
# CONFIG_SND_SOC_ADAU1701 is not set
|
||||
# CONFIG_SND_SOC_ADAU7002 is not set
|
||||
# CONFIG_SND_SOC_AK4104 is not set
|
||||
# CONFIG_SND_SOC_AK4554 is not set
|
||||
# CONFIG_SND_SOC_AK4613 is not set
|
||||
# CONFIG_SND_SOC_AK4642 is not set
|
||||
# CONFIG_SND_SOC_AK5386 is not set
|
||||
# CONFIG_SND_SOC_ALC5623 is not set
|
||||
# CONFIG_SND_SOC_BT_SCO is not set
|
||||
# CONFIG_SND_SOC_CS35L32 is not set
|
||||
# CONFIG_SND_SOC_CS35L33 is not set
|
||||
# CONFIG_SND_SOC_CS42L51_I2C is not set
|
||||
# CONFIG_SND_SOC_CS42L52 is not set
|
||||
# CONFIG_SND_SOC_CS42L56 is not set
|
||||
# CONFIG_SND_SOC_CS42L73 is not set
|
||||
# CONFIG_SND_SOC_CS4265 is not set
|
||||
# CONFIG_SND_SOC_CS4270 is not set
|
||||
# CONFIG_SND_SOC_CS4271_I2C is not set
|
||||
# CONFIG_SND_SOC_CS4271_SPI is not set
|
||||
# CONFIG_SND_SOC_CS42XX8_I2C is not set
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CS53L30 is not set
|
||||
# CONFIG_SND_SOC_ES8328 is not set
|
||||
# CONFIG_SND_SOC_GTM601 is not set
|
||||
# CONFIG_SND_SOC_INNO_RK3036 is not set
|
||||
# CONFIG_SND_SOC_MAX98504 is not set
|
||||
# CONFIG_SND_SOC_MAX9860 is not set
|
||||
# CONFIG_SND_SOC_PCM1681 is not set
|
||||
# CONFIG_SND_SOC_PCM179X_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM179X_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM3168A_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RT5616 is not set
|
||||
# CONFIG_SND_SOC_RT5631 is not set
|
||||
# CONFIG_SND_SOC_RT5677_SPI is not set
|
||||
CONFIG_SND_SOC_SGTL5000=m
|
||||
CONFIG_SND_SOC_SIGMADSP=m
|
||||
CONFIG_SND_SOC_SIGMADSP_I2C=m
|
||||
CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m
|
||||
# CONFIG_SND_SOC_SGTL5000 is not set
|
||||
# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
|
||||
CONFIG_SND_SOC_SPDIF=y
|
||||
CONFIG_SND_SOC_SSM2602=m
|
||||
CONFIG_SND_SOC_SSM2602_SPI=m
|
||||
CONFIG_SND_SOC_SSM2602_I2C=m
|
||||
CONFIG_SND_SOC_SSM4567=m
|
||||
CONFIG_SND_SOC_STA32X=m
|
||||
CONFIG_SND_SOC_STA350=m
|
||||
CONFIG_SND_SOC_STI_SAS=m
|
||||
CONFIG_SND_SOC_TAS2552=m
|
||||
CONFIG_SND_SOC_TAS5086=m
|
||||
CONFIG_SND_SOC_TAS571X=m
|
||||
CONFIG_SND_SOC_TAS5720=m
|
||||
CONFIG_SND_SOC_TAS5805=m
|
||||
CONFIG_SND_SOC_TFA9879=m
|
||||
CONFIG_SND_SOC_TLV320AIC23=m
|
||||
CONFIG_SND_SOC_TLV320AIC23_I2C=m
|
||||
CONFIG_SND_SOC_TLV320AIC23_SPI=m
|
||||
CONFIG_SND_SOC_TLV320AIC31XX=m
|
||||
CONFIG_SND_SOC_TLV320AIC3X=m
|
||||
CONFIG_SND_SOC_TS3A227E=m
|
||||
CONFIG_SND_SOC_WM8510=m
|
||||
CONFIG_SND_SOC_WM8523=m
|
||||
CONFIG_SND_SOC_WM8580=m
|
||||
CONFIG_SND_SOC_WM8711=m
|
||||
CONFIG_SND_SOC_WM8728=m
|
||||
CONFIG_SND_SOC_WM8731=m
|
||||
CONFIG_SND_SOC_WM8737=m
|
||||
CONFIG_SND_SOC_WM8741=m
|
||||
CONFIG_SND_SOC_WM8750=m
|
||||
CONFIG_SND_SOC_WM8753=m
|
||||
CONFIG_SND_SOC_WM8770=m
|
||||
CONFIG_SND_SOC_WM8776=m
|
||||
CONFIG_SND_SOC_WM8804=m
|
||||
CONFIG_SND_SOC_WM8804_I2C=m
|
||||
CONFIG_SND_SOC_WM8804_SPI=m
|
||||
CONFIG_SND_SOC_WM8903=m
|
||||
CONFIG_SND_SOC_WM8960=m
|
||||
CONFIG_SND_SOC_WM8962=m
|
||||
CONFIG_SND_SOC_WM8974=m
|
||||
CONFIG_SND_SOC_WM8978=m
|
||||
CONFIG_SND_SOC_WM8985=m
|
||||
CONFIG_SND_SOC_NAU8810=m
|
||||
CONFIG_SND_SOC_TPA6130A2=m
|
||||
# CONFIG_SND_SOC_SSM2602_SPI is not set
|
||||
# CONFIG_SND_SOC_SSM2602_I2C is not set
|
||||
# CONFIG_SND_SOC_SSM4567 is not set
|
||||
# CONFIG_SND_SOC_STA32X is not set
|
||||
# CONFIG_SND_SOC_STA350 is not set
|
||||
# CONFIG_SND_SOC_STI_SAS is not set
|
||||
# CONFIG_SND_SOC_TAS2552 is not set
|
||||
# CONFIG_SND_SOC_TAS5086 is not set
|
||||
# CONFIG_SND_SOC_TAS571X is not set
|
||||
# CONFIG_SND_SOC_TAS5720 is not set
|
||||
# CONFIG_SND_SOC_TAS5805 is not set
|
||||
# CONFIG_SND_SOC_TFA9879 is not set
|
||||
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
|
||||
# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
|
||||
# CONFIG_SND_SOC_TLV320AIC31XX is not set
|
||||
# CONFIG_SND_SOC_TLV320AIC3X is not set
|
||||
# CONFIG_SND_SOC_TS3A227E is not set
|
||||
# CONFIG_SND_SOC_WM8510 is not set
|
||||
# CONFIG_SND_SOC_WM8523 is not set
|
||||
# CONFIG_SND_SOC_WM8580 is not set
|
||||
# CONFIG_SND_SOC_WM8711 is not set
|
||||
# CONFIG_SND_SOC_WM8728 is not set
|
||||
# CONFIG_SND_SOC_WM8731 is not set
|
||||
# CONFIG_SND_SOC_WM8737 is not set
|
||||
# CONFIG_SND_SOC_WM8741 is not set
|
||||
# CONFIG_SND_SOC_WM8750 is not set
|
||||
# CONFIG_SND_SOC_WM8753 is not set
|
||||
# CONFIG_SND_SOC_WM8770 is not set
|
||||
# CONFIG_SND_SOC_WM8776 is not set
|
||||
# CONFIG_SND_SOC_WM8804_I2C is not set
|
||||
# CONFIG_SND_SOC_WM8804_SPI is not set
|
||||
# CONFIG_SND_SOC_WM8903 is not set
|
||||
# CONFIG_SND_SOC_WM8960 is not set
|
||||
# CONFIG_SND_SOC_WM8962 is not set
|
||||
# CONFIG_SND_SOC_WM8974 is not set
|
||||
# CONFIG_SND_SOC_WM8978 is not set
|
||||
# CONFIG_SND_SOC_WM8985 is not set
|
||||
# CONFIG_SND_SOC_NAU8810 is not set
|
||||
# CONFIG_SND_SOC_TPA6130A2 is not set
|
||||
CONFIG_AMLOGIC_SND_SOC_CODECS=y
|
||||
CONFIG_AMLOGIC_SND_CODEC_DUMMY_CODEC=y
|
||||
CONFIG_AMLOGIC_SND_CODEC_PCM2BT=y
|
||||
@ -4189,6 +4192,7 @@ CONFIG_AMLOGIC_SND_CODEC_AMLT9015=y
|
||||
# CONFIG_AMLOGIC_SND_SOC_TAS5805 is not set
|
||||
CONFIG_AMLOGIC_SND_CODEC_TXLX_ACODEC=y
|
||||
# CONFIG_AMLOGIC_SND_CODEC_TL1_ACODEC is not set
|
||||
# CONFIG_AMLOGIC_SND_SOC_TAS5782M is not set
|
||||
CONFIG_AMLOGIC_SND_SOC_TAS5707=y
|
||||
CONFIG_AMLOGIC_SND_SOC_TLV320ADC3101=y
|
||||
CONFIG_AMLOGIC_SND_SOC_PCM186X=y
|
||||
@ -4207,7 +4211,7 @@ CONFIG_AMLOGIC_SND_SPLIT_MODE=y
|
||||
# CONFIG_AMLOGIC_SND_SPLIT_MODE_MMAP is not set
|
||||
CONFIG_AMLOGIC_SND_SOC_COMMON=y
|
||||
# CONFIG_SOUND_PRIME is not set
|
||||
CONFIG_AC97_BUS=y
|
||||
CONFIG_AC97_BUS=m
|
||||
|
||||
#
|
||||
# HID support
|
||||
@ -4716,45 +4720,43 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_PCF8523 is not set
|
||||
# CONFIG_RTC_DRV_PCF85063 is not set
|
||||
CONFIG_RTC_DRV_PCF8563=m
|
||||
CONFIG_RTC_DRV_PCF8583=m
|
||||
CONFIG_RTC_DRV_M41T80=m
|
||||
# CONFIG_RTC_DRV_M41T80_WDT is not set
|
||||
CONFIG_RTC_DRV_BQ32K=m
|
||||
CONFIG_RTC_DRV_S35390A=m
|
||||
CONFIG_RTC_DRV_FM3130=m
|
||||
# CONFIG_RTC_DRV_PCF8583 is not set
|
||||
# CONFIG_RTC_DRV_M41T80 is not set
|
||||
# CONFIG_RTC_DRV_BQ32K is not set
|
||||
# CONFIG_RTC_DRV_S35390A is not set
|
||||
# CONFIG_RTC_DRV_FM3130 is not set
|
||||
# CONFIG_RTC_DRV_RX8010 is not set
|
||||
CONFIG_RTC_DRV_RX8581=m
|
||||
CONFIG_RTC_DRV_RX8025=m
|
||||
CONFIG_RTC_DRV_EM3027=m
|
||||
# CONFIG_RTC_DRV_RX8581 is not set
|
||||
# CONFIG_RTC_DRV_RX8025 is not set
|
||||
# CONFIG_RTC_DRV_EM3027 is not set
|
||||
# CONFIG_RTC_DRV_RV8803 is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_M41T93=m
|
||||
CONFIG_RTC_DRV_M41T94=m
|
||||
CONFIG_RTC_DRV_DS1302=m
|
||||
CONFIG_RTC_DRV_DS1305=m
|
||||
# CONFIG_RTC_DRV_M41T93 is not set
|
||||
# CONFIG_RTC_DRV_M41T94 is not set
|
||||
# CONFIG_RTC_DRV_DS1302 is not set
|
||||
# CONFIG_RTC_DRV_DS1305 is not set
|
||||
# CONFIG_RTC_DRV_DS1343 is not set
|
||||
# CONFIG_RTC_DRV_DS1347 is not set
|
||||
CONFIG_RTC_DRV_DS1390=m
|
||||
# CONFIG_RTC_DRV_DS1390 is not set
|
||||
# CONFIG_RTC_DRV_MAX6916 is not set
|
||||
CONFIG_RTC_DRV_R9701=m
|
||||
CONFIG_RTC_DRV_RX4581=m
|
||||
# CONFIG_RTC_DRV_R9701 is not set
|
||||
# CONFIG_RTC_DRV_RX4581 is not set
|
||||
# CONFIG_RTC_DRV_RX6110 is not set
|
||||
CONFIG_RTC_DRV_RS5C348=m
|
||||
CONFIG_RTC_DRV_MAX6902=m
|
||||
CONFIG_RTC_DRV_PCF2123=m
|
||||
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||
# CONFIG_RTC_DRV_PCF2123 is not set
|
||||
# CONFIG_RTC_DRV_MCP795 is not set
|
||||
CONFIG_RTC_I2C_AND_SPI=y
|
||||
|
||||
#
|
||||
# SPI and I2C RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_DS3232=m
|
||||
CONFIG_RTC_DRV_PCF2127=m
|
||||
CONFIG_RTC_DRV_RV3029C2=m
|
||||
CONFIG_RTC_DRV_RV3029_HWMON=y
|
||||
# CONFIG_RTC_DRV_DS3232 is not set
|
||||
# CONFIG_RTC_DRV_PCF2127 is not set
|
||||
# CONFIG_RTC_DRV_RV3029C2 is not set
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
@ -4906,18 +4908,7 @@ CONFIG_R8712U=m
|
||||
#
|
||||
# Speakup console speech
|
||||
#
|
||||
CONFIG_SPEAKUP=m
|
||||
# CONFIG_SPEAKUP_SYNTH_ACNTSA is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_APOLLO is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_AUDPTR is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_BNS is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_DECTLK is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_DECEXT is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_LTLK is not set
|
||||
CONFIG_SPEAKUP_SYNTH_SOFT=m
|
||||
# CONFIG_SPEAKUP_SYNTH_SPKOUT is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_TXPRT is not set
|
||||
# CONFIG_SPEAKUP_SYNTH_DUMMY is not set
|
||||
# CONFIG_SPEAKUP is not set
|
||||
CONFIG_STAGING_MEDIA=y
|
||||
# CONFIG_I2C_BCM2048 is not set
|
||||
# CONFIG_MEDIA_CEC is not set
|
||||
@ -5682,24 +5673,6 @@ CONFIG_PSTORE_RAM=y
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_EXOFS_FS is not set
|
||||
CONFIG_AUFS_FS=m
|
||||
CONFIG_AUFS_BRANCH_MAX_127=y
|
||||
# CONFIG_AUFS_BRANCH_MAX_511 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_1023 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_32767 is not set
|
||||
CONFIG_AUFS_SBILIST=y
|
||||
# CONFIG_AUFS_HNOTIFY is not set
|
||||
# CONFIG_AUFS_EXPORT is not set
|
||||
# CONFIG_AUFS_XATTR is not set
|
||||
# CONFIG_AUFS_FHSM is not set
|
||||
# CONFIG_AUFS_RDU is not set
|
||||
# CONFIG_AUFS_DIRREN is not set
|
||||
# CONFIG_AUFS_SHWH is not set
|
||||
# CONFIG_AUFS_BR_RAMFS is not set
|
||||
# CONFIG_AUFS_BR_FUSE is not set
|
||||
CONFIG_AUFS_BR_HFSPLUS=y
|
||||
CONFIG_AUFS_BDEV_LOOP=y
|
||||
# CONFIG_AUFS_DEBUG is not set
|
||||
CONFIG_ORE=m
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=m
|
||||
@ -5847,7 +5820,7 @@ CONFIG_FRAME_WARN=0
|
||||
# CONFIG_PAGE_OWNER is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_SECTION_MISMATCH is not set
|
||||
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
|
||||
CONFIG_ARCH_WANT_FRAME_POINTERS=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 4.4.182 Kernel Configuration
|
||||
# Linux/arm 4.4.190 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
@ -5485,7 +5485,7 @@ CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
||||
CONFIG_XZ_DEC=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
|
||||
@ -14,7 +14,7 @@ KERNEL_IMAGE_TYPE=Image
|
||||
case $BRANCH in
|
||||
default)
|
||||
KERNELSOURCE='https://github.com/hardkernel/linux'
|
||||
KERNELBRANCH='tag:4.9.185-44'
|
||||
KERNELBRANCH='branch:odroidn2-4.9.y'
|
||||
KERNELDIR='linux-odroidn2'
|
||||
KERNEL_COMPILER='aarch64-linux-gnu-'
|
||||
KERNEL_USE_GCC='< 7.0'
|
||||
|
||||
@ -416,7 +416,7 @@ renegade default buster cli stable yes
|
||||
renegade default buster cli stable yes
|
||||
renegade default bionic desktop stable yes
|
||||
renegade default bionic desktop stable yes
|
||||
renegade dev buster minimal beta yes
|
||||
renegade dev buster minimal beta yes
|
||||
|
||||
# Rock64
|
||||
|
||||
@ -424,7 +424,7 @@ rock64 default buster cli stable yes
|
||||
rock64 default buster cli stable yes
|
||||
rock64 default bionic desktop stable yes
|
||||
rock64 default bionic desktop stable yes
|
||||
rock64 dev buster minimal beta yes
|
||||
rock64 dev buster minimal beta yes
|
||||
|
||||
# Rock-pi-4
|
||||
|
||||
@ -432,7 +432,7 @@ rockpi-4b default buster cli stable yes
|
||||
rockpi-4b default buster cli stable yes
|
||||
rockpi-4b default bionic desktop stable yes
|
||||
rockpi-4b default bionic desktop stable yes
|
||||
rockpi-4b dev buster minimal beta yes
|
||||
rockpi-4b dev buster minimal beta yes
|
||||
|
||||
# Rock64pro
|
||||
|
||||
@ -440,13 +440,13 @@ rockpro64 default buster cli stable yes
|
||||
rockpro64 default buster cli stable yes
|
||||
rockpro64 default bionic desktop stable yes
|
||||
rockpro64 default bionic desktop stable yes
|
||||
rockpro64 dev buster minimal beta yes
|
||||
rockpro64 dev buster minimal beta yes
|
||||
|
||||
# Teres A64
|
||||
|
||||
teres-a64 next bionic desktop stable yes
|
||||
teres-a64 next buster minimal stable yes
|
||||
teres-a64 dev buster desktop beta yes
|
||||
teres-a64 dev buster desktop beta yes
|
||||
|
||||
# Tinkerboard
|
||||
|
||||
@ -455,7 +455,7 @@ tinkerboard default buster desktop stable yes
|
||||
tinkerboard default bionic cli stable yes
|
||||
tinkerboard default bionic desktop stable yes
|
||||
tinkerboard next buster minimal stable yes
|
||||
tinkerboard dev buster minimal beta yes
|
||||
tinkerboard dev buster minimal beta yes
|
||||
|
||||
# tritium-h3
|
||||
|
||||
|
||||
@ -81,6 +81,7 @@ debootstrap_ng()
|
||||
fi
|
||||
|
||||
# stage: unmount tmpfs
|
||||
umount $SDCARD 2>&1
|
||||
if [[ $use_tmpfs = yes ]]; then
|
||||
while grep -qs '$SDCARD' /proc/mounts
|
||||
do
|
||||
|
||||
2186
patch/kernel/rockchip-default/04-patch-4.4.182-183.patch
Normal file
2186
patch/kernel/rockchip-default/04-patch-4.4.182-183.patch
Normal file
File diff suppressed because it is too large
Load Diff
25
patch/kernel/rockchip-default/04-patch-4.4.183-184.patch
Normal file
25
patch/kernel/rockchip-default/04-patch-4.4.183-184.patch
Normal file
@ -0,0 +1,25 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 4ac762e01e60..f098274d3ac3 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 183
|
||||
+SUBLEVEL = 184
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
|
||||
index bed83990847a..53edd60fd381 100644
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -1161,7 +1161,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len,
|
||||
if (nsize < 0)
|
||||
nsize = 0;
|
||||
|
||||
- if (unlikely((sk->sk_wmem_queued >> 1) > sk->sk_sndbuf)) {
|
||||
+ if (unlikely((sk->sk_wmem_queued >> 1) > sk->sk_sndbuf + 0x20000)) {
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPWQUEUETOOBIG);
|
||||
return -ENOMEM;
|
||||
}
|
||||
1860
patch/kernel/rockchip-default/04-patch-4.4.184-185.patch
Normal file
1860
patch/kernel/rockchip-default/04-patch-4.4.184-185.patch
Normal file
File diff suppressed because it is too large
Load Diff
1919
patch/kernel/rockchip-default/04-patch-4.4.185-186.patch
Normal file
1919
patch/kernel/rockchip-default/04-patch-4.4.185-186.patch
Normal file
File diff suppressed because it is too large
Load Diff
8471
patch/kernel/rockchip-default/04-patch-4.4.186-187.patch
Normal file
8471
patch/kernel/rockchip-default/04-patch-4.4.186-187.patch
Normal file
File diff suppressed because it is too large
Load Diff
543
patch/kernel/rockchip-default/04-patch-4.4.187-188.patch
Normal file
543
patch/kernel/rockchip-default/04-patch-4.4.187-188.patch
Normal file
@ -0,0 +1,543 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index fdfe65eefa36..87d663191986 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 187
|
||||
+SUBLEVEL = 188
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
||||
index 04ea209f1737..98abb053b7da 100644
|
||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
||||
@@ -205,6 +205,7 @@
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
|
||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
clock-frequency = <24000000>;
|
||||
+ arm,no-tick-in-suspend;
|
||||
};
|
||||
|
||||
timer: timer@ff810000 {
|
||||
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c
|
||||
index 6d3517dc4772..82aac38fa2cf 100644
|
||||
--- a/arch/arm/mach-rpc/dma.c
|
||||
+++ b/arch/arm/mach-rpc/dma.c
|
||||
@@ -131,7 +131,7 @@ static irqreturn_t iomd_dma_handle(int irq, void *dev_id)
|
||||
} while (1);
|
||||
|
||||
idma->state = ~DMA_ST_AB;
|
||||
- disable_irq(irq);
|
||||
+ disable_irq_nosync(irq);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -174,6 +174,9 @@ static void iomd_enable_dma(unsigned int chan, dma_t *dma)
|
||||
DMA_FROM_DEVICE : DMA_TO_DEVICE);
|
||||
}
|
||||
|
||||
+ idma->dma_addr = idma->dma.sg->dma_address;
|
||||
+ idma->dma_len = idma->dma.sg->length;
|
||||
+
|
||||
iomd_writeb(DMA_CR_C, dma_base + CR);
|
||||
idma->state = DMA_ST_AB;
|
||||
}
|
||||
diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c
|
||||
index 2e7f60c9fc5d..a7057a06c096 100644
|
||||
--- a/arch/mips/lantiq/irq.c
|
||||
+++ b/arch/mips/lantiq/irq.c
|
||||
@@ -160,8 +160,9 @@ static int ltq_eiu_settype(struct irq_data *d, unsigned int type)
|
||||
if (edge)
|
||||
irq_set_handler(d->hwirq, handle_edge_irq);
|
||||
|
||||
- ltq_eiu_w32(ltq_eiu_r32(LTQ_EIU_EXIN_C) |
|
||||
- (val << (i * 4)), LTQ_EIU_EXIN_C);
|
||||
+ ltq_eiu_w32((ltq_eiu_r32(LTQ_EIU_EXIN_C) &
|
||||
+ (~(7 << (i * 4)))) | (val << (i * 4)),
|
||||
+ LTQ_EIU_EXIN_C);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
|
||||
index fd810a57ab1b..3328a37ddc75 100644
|
||||
--- a/arch/x86/include/asm/apic.h
|
||||
+++ b/arch/x86/include/asm/apic.h
|
||||
@@ -44,7 +44,7 @@ static inline void generic_apic_probe(void)
|
||||
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
|
||||
-extern unsigned int apic_verbosity;
|
||||
+extern int apic_verbosity;
|
||||
extern int local_apic_timer_c2_ok;
|
||||
|
||||
extern int disable_apic;
|
||||
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
|
||||
index 2cb49ac1b2b2..39f202462029 100644
|
||||
--- a/arch/x86/include/asm/kvm_host.h
|
||||
+++ b/arch/x86/include/asm/kvm_host.h
|
||||
@@ -1184,25 +1184,29 @@ enum {
|
||||
#define kvm_arch_vcpu_memslots_id(vcpu) ((vcpu)->arch.hflags & HF_SMM_MASK ? 1 : 0)
|
||||
#define kvm_memslots_for_spte_role(kvm, role) __kvm_memslots(kvm, (role).smm)
|
||||
|
||||
+asmlinkage void __noreturn kvm_spurious_fault(void);
|
||||
+
|
||||
/*
|
||||
* Hardware virtualization extension instructions may fault if a
|
||||
* reboot turns off virtualization while processes are running.
|
||||
- * Trap the fault and ignore the instruction if that happens.
|
||||
+ * Usually after catching the fault we just panic; during reboot
|
||||
+ * instead the instruction is ignored.
|
||||
*/
|
||||
-asmlinkage void kvm_spurious_fault(void);
|
||||
-
|
||||
-#define ____kvm_handle_fault_on_reboot(insn, cleanup_insn) \
|
||||
- "666: " insn "\n\t" \
|
||||
- "668: \n\t" \
|
||||
- ".pushsection .fixup, \"ax\" \n" \
|
||||
- "667: \n\t" \
|
||||
- cleanup_insn "\n\t" \
|
||||
- "cmpb $0, kvm_rebooting \n\t" \
|
||||
- "jne 668b \n\t" \
|
||||
- __ASM_SIZE(push) " $666b \n\t" \
|
||||
- "jmp kvm_spurious_fault \n\t" \
|
||||
- ".popsection \n\t" \
|
||||
- _ASM_EXTABLE(666b, 667b)
|
||||
+#define ____kvm_handle_fault_on_reboot(insn, cleanup_insn) \
|
||||
+ "666: \n\t" \
|
||||
+ insn "\n\t" \
|
||||
+ "jmp 668f \n\t" \
|
||||
+ "667: \n\t" \
|
||||
+ "call kvm_spurious_fault \n\t" \
|
||||
+ "668: \n\t" \
|
||||
+ ".pushsection .fixup, \"ax\" \n\t" \
|
||||
+ "700: \n\t" \
|
||||
+ cleanup_insn "\n\t" \
|
||||
+ "cmpb $0, kvm_rebooting\n\t" \
|
||||
+ "je 667b \n\t" \
|
||||
+ "jmp 668b \n\t" \
|
||||
+ ".popsection \n\t" \
|
||||
+ _ASM_EXTABLE(666b, 700b)
|
||||
|
||||
#define __kvm_handle_fault_on_reboot(insn) \
|
||||
____kvm_handle_fault_on_reboot(insn, "")
|
||||
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
|
||||
index deddc9b93299..cc6c33249850 100644
|
||||
--- a/arch/x86/kernel/apic/apic.c
|
||||
+++ b/arch/x86/kernel/apic/apic.c
|
||||
@@ -171,7 +171,7 @@ int first_system_vector = FIRST_SYSTEM_VECTOR;
|
||||
/*
|
||||
* Debug level, exported for io_apic.c
|
||||
*/
|
||||
-unsigned int apic_verbosity;
|
||||
+int apic_verbosity;
|
||||
|
||||
int pic_mode;
|
||||
|
||||
diff --git a/arch/x86/math-emu/fpu_emu.h b/arch/x86/math-emu/fpu_emu.h
|
||||
index afbc4d805d66..df5aee5402c4 100644
|
||||
--- a/arch/x86/math-emu/fpu_emu.h
|
||||
+++ b/arch/x86/math-emu/fpu_emu.h
|
||||
@@ -176,7 +176,7 @@ static inline void reg_copy(FPU_REG const *x, FPU_REG *y)
|
||||
#define setexponentpos(x,y) { (*(short *)&((x)->exp)) = \
|
||||
((y) + EXTENDED_Ebias) & 0x7fff; }
|
||||
#define exponent16(x) (*(short *)&((x)->exp))
|
||||
-#define setexponent16(x,y) { (*(short *)&((x)->exp)) = (y); }
|
||||
+#define setexponent16(x,y) { (*(short *)&((x)->exp)) = (u16)(y); }
|
||||
#define addexponent(x,y) { (*(short *)&((x)->exp)) += (y); }
|
||||
#define stdexp(x) { (*(short *)&((x)->exp)) += EXTENDED_Ebias; }
|
||||
|
||||
diff --git a/arch/x86/math-emu/reg_constant.c b/arch/x86/math-emu/reg_constant.c
|
||||
index 00548354912f..382093c5072b 100644
|
||||
--- a/arch/x86/math-emu/reg_constant.c
|
||||
+++ b/arch/x86/math-emu/reg_constant.c
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "control_w.h"
|
||||
|
||||
#define MAKE_REG(s, e, l, h) { l, h, \
|
||||
- ((EXTENDED_Ebias+(e)) | ((SIGN_##s != 0)*0x8000)) }
|
||||
+ (u16)((EXTENDED_Ebias+(e)) | ((SIGN_##s != 0)*0x8000)) }
|
||||
|
||||
FPU_REG const CONST_1 = MAKE_REG(POS, 0, 0x00000000, 0x80000000);
|
||||
#if 0
|
||||
diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
|
||||
index 2b36d1c63aa5..956189a1ba81 100644
|
||||
--- a/drivers/dma/sh/rcar-dmac.c
|
||||
+++ b/drivers/dma/sh/rcar-dmac.c
|
||||
@@ -1030,7 +1030,7 @@ rcar_dmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
|
||||
dma_addr_t dev_addr;
|
||||
|
||||
/* Someone calling slave DMA on a generic channel? */
|
||||
- if (rchan->mid_rid < 0 || !sg_len) {
|
||||
+ if (rchan->mid_rid < 0 || !sg_len || !sg_dma_len(sgl)) {
|
||||
dev_warn(chan->device->dev,
|
||||
"%s: bad parameter: len=%d, id=%d\n",
|
||||
__func__, sg_len, rchan->mid_rid);
|
||||
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
|
||||
index 26255862d1cf..7524a33b7032 100644
|
||||
--- a/drivers/net/ethernet/emulex/benet/be_main.c
|
||||
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
|
||||
@@ -4307,8 +4307,12 @@ int be_update_queues(struct be_adapter *adapter)
|
||||
struct net_device *netdev = adapter->netdev;
|
||||
int status;
|
||||
|
||||
- if (netif_running(netdev))
|
||||
+ if (netif_running(netdev)) {
|
||||
+ /* device cannot transmit now, avoid dev_watchdog timeouts */
|
||||
+ netif_carrier_off(netdev);
|
||||
+
|
||||
be_close(netdev);
|
||||
+ }
|
||||
|
||||
be_cancel_worker(adapter);
|
||||
|
||||
diff --git a/drivers/s390/block/dasd_alias.c b/drivers/s390/block/dasd_alias.c
|
||||
index 286782c60da4..6601047d4b65 100644
|
||||
--- a/drivers/s390/block/dasd_alias.c
|
||||
+++ b/drivers/s390/block/dasd_alias.c
|
||||
@@ -396,6 +396,20 @@ suborder_not_supported(struct dasd_ccw_req *cqr)
|
||||
char msg_format;
|
||||
char msg_no;
|
||||
|
||||
+ /*
|
||||
+ * intrc values ENODEV, ENOLINK and EPERM
|
||||
+ * will be optained from sleep_on to indicate that no
|
||||
+ * IO operation can be started
|
||||
+ */
|
||||
+ if (cqr->intrc == -ENODEV)
|
||||
+ return 1;
|
||||
+
|
||||
+ if (cqr->intrc == -ENOLINK)
|
||||
+ return 1;
|
||||
+
|
||||
+ if (cqr->intrc == -EPERM)
|
||||
+ return 1;
|
||||
+
|
||||
sense = dasd_get_sense(&cqr->irb);
|
||||
if (!sense)
|
||||
return 0;
|
||||
@@ -460,12 +474,8 @@ static int read_unit_address_configuration(struct dasd_device *device,
|
||||
lcu->flags &= ~NEED_UAC_UPDATE;
|
||||
spin_unlock_irqrestore(&lcu->lock, flags);
|
||||
|
||||
- do {
|
||||
- rc = dasd_sleep_on(cqr);
|
||||
- if (rc && suborder_not_supported(cqr))
|
||||
- return -EOPNOTSUPP;
|
||||
- } while (rc && (cqr->retries > 0));
|
||||
- if (rc) {
|
||||
+ rc = dasd_sleep_on(cqr);
|
||||
+ if (rc && !suborder_not_supported(cqr)) {
|
||||
spin_lock_irqsave(&lcu->lock, flags);
|
||||
lcu->flags |= NEED_UAC_UPDATE;
|
||||
spin_unlock_irqrestore(&lcu->lock, flags);
|
||||
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
|
||||
index abe460eac712..cc62d8cc8cfd 100644
|
||||
--- a/drivers/s390/scsi/zfcp_erp.c
|
||||
+++ b/drivers/s390/scsi/zfcp_erp.c
|
||||
@@ -10,6 +10,7 @@
|
||||
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
|
||||
|
||||
#include <linux/kthread.h>
|
||||
+#include <linux/bug.h>
|
||||
#include "zfcp_ext.h"
|
||||
#include "zfcp_reqlist.h"
|
||||
|
||||
@@ -244,6 +245,12 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
|
||||
struct zfcp_erp_action *erp_action;
|
||||
struct zfcp_scsi_dev *zfcp_sdev;
|
||||
|
||||
+ if (WARN_ON_ONCE(need != ZFCP_ERP_ACTION_REOPEN_LUN &&
|
||||
+ need != ZFCP_ERP_ACTION_REOPEN_PORT &&
|
||||
+ need != ZFCP_ERP_ACTION_REOPEN_PORT_FORCED &&
|
||||
+ need != ZFCP_ERP_ACTION_REOPEN_ADAPTER))
|
||||
+ return NULL;
|
||||
+
|
||||
switch (need) {
|
||||
case ZFCP_ERP_ACTION_REOPEN_LUN:
|
||||
zfcp_sdev = sdev_to_zfcp(sdev);
|
||||
diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
|
||||
index a8a388382347..80e292227cef 100644
|
||||
--- a/drivers/xen/swiotlb-xen.c
|
||||
+++ b/drivers/xen/swiotlb-xen.c
|
||||
@@ -365,8 +365,8 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
|
||||
/* Convert the size to actually allocated. */
|
||||
size = 1UL << (order + XEN_PAGE_SHIFT);
|
||||
|
||||
- if (((dev_addr + size - 1 <= dma_mask)) ||
|
||||
- range_straddles_page_boundary(phys, size))
|
||||
+ if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
|
||||
+ range_straddles_page_boundary(phys, size)))
|
||||
xen_destroy_contiguous_region(phys, order);
|
||||
|
||||
xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);
|
||||
diff --git a/fs/adfs/super.c b/fs/adfs/super.c
|
||||
index 4d4a0df8344f..b00ae922ece2 100644
|
||||
--- a/fs/adfs/super.c
|
||||
+++ b/fs/adfs/super.c
|
||||
@@ -368,6 +368,7 @@ static int adfs_fill_super(struct super_block *sb, void *data, int silent)
|
||||
struct buffer_head *bh;
|
||||
struct object_info root_obj;
|
||||
unsigned char *b_data;
|
||||
+ unsigned int blocksize;
|
||||
struct adfs_sb_info *asb;
|
||||
struct inode *root;
|
||||
int ret = -EINVAL;
|
||||
@@ -419,8 +420,10 @@ static int adfs_fill_super(struct super_block *sb, void *data, int silent)
|
||||
goto error_free_bh;
|
||||
}
|
||||
|
||||
+ blocksize = 1 << dr->log2secsize;
|
||||
brelse(bh);
|
||||
- if (sb_set_blocksize(sb, 1 << dr->log2secsize)) {
|
||||
+
|
||||
+ if (sb_set_blocksize(sb, blocksize)) {
|
||||
bh = sb_bread(sb, ADFS_DISCRECORD / sb->s_blocksize);
|
||||
if (!bh) {
|
||||
adfs_error(sb, "couldn't read superblock on "
|
||||
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
|
||||
index 4eb7a6ba7e47..55ce6543050d 100644
|
||||
--- a/fs/btrfs/volumes.c
|
||||
+++ b/fs/btrfs/volumes.c
|
||||
@@ -4942,8 +4942,7 @@ static inline int btrfs_chunk_max_errors(struct map_lookup *map)
|
||||
|
||||
if (map->type & (BTRFS_BLOCK_GROUP_RAID1 |
|
||||
BTRFS_BLOCK_GROUP_RAID10 |
|
||||
- BTRFS_BLOCK_GROUP_RAID5 |
|
||||
- BTRFS_BLOCK_GROUP_DUP)) {
|
||||
+ BTRFS_BLOCK_GROUP_RAID5)) {
|
||||
max_errors = 1;
|
||||
} else if (map->type & BTRFS_BLOCK_GROUP_RAID6) {
|
||||
max_errors = 2;
|
||||
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
|
||||
index 8c8cb8fe3d32..5d05c77c158d 100644
|
||||
--- a/fs/ceph/super.h
|
||||
+++ b/fs/ceph/super.h
|
||||
@@ -474,7 +474,12 @@ static inline void __ceph_dir_set_complete(struct ceph_inode_info *ci,
|
||||
long long release_count,
|
||||
long long ordered_count)
|
||||
{
|
||||
- smp_mb__before_atomic();
|
||||
+ /*
|
||||
+ * Makes sure operations that setup readdir cache (update page
|
||||
+ * cache and i_size) are strongly ordered w.r.t. the following
|
||||
+ * atomic64_set() operations.
|
||||
+ */
|
||||
+ smp_mb();
|
||||
atomic64_set(&ci->i_complete_seq[0], release_count);
|
||||
atomic64_set(&ci->i_complete_seq[1], ordered_count);
|
||||
}
|
||||
diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c
|
||||
index 822629126e89..ff9b5cf8ff01 100644
|
||||
--- a/fs/coda/psdev.c
|
||||
+++ b/fs/coda/psdev.c
|
||||
@@ -187,8 +187,11 @@ static ssize_t coda_psdev_write(struct file *file, const char __user *buf,
|
||||
if (req->uc_opcode == CODA_OPEN_BY_FD) {
|
||||
struct coda_open_by_fd_out *outp =
|
||||
(struct coda_open_by_fd_out *)req->uc_data;
|
||||
- if (!outp->oh.result)
|
||||
+ if (!outp->oh.result) {
|
||||
outp->fh = fget(outp->fd);
|
||||
+ if (!outp->fh)
|
||||
+ return -EBADF;
|
||||
+ }
|
||||
}
|
||||
|
||||
wake_up(&req->uc_sleep);
|
||||
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
|
||||
index 3672893b275e..6a30f1e03aa9 100644
|
||||
--- a/include/linux/acpi.h
|
||||
+++ b/include/linux/acpi.h
|
||||
@@ -226,7 +226,10 @@ void acpi_set_irq_model(enum acpi_irq_model_id model,
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);
|
||||
#else
|
||||
-#define acpi_get_override_irq(gsi, trigger, polarity) (-1)
|
||||
+static inline int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity)
|
||||
+{
|
||||
+ return -1;
|
||||
+}
|
||||
#endif
|
||||
/*
|
||||
* This function undoes the effect of one call to acpi_register_gsi().
|
||||
diff --git a/include/linux/coda.h b/include/linux/coda.h
|
||||
index d30209b9cef8..0ca0c83fdb1c 100644
|
||||
--- a/include/linux/coda.h
|
||||
+++ b/include/linux/coda.h
|
||||
@@ -58,8 +58,7 @@ Mellon the rights to redistribute these changes without encumbrance.
|
||||
#ifndef _CODA_HEADER_
|
||||
#define _CODA_HEADER_
|
||||
|
||||
-#if defined(__linux__)
|
||||
typedef unsigned long long u_quad_t;
|
||||
-#endif
|
||||
+
|
||||
#include <uapi/linux/coda.h>
|
||||
#endif
|
||||
diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h
|
||||
index 5b8721efa948..fe1466daf291 100644
|
||||
--- a/include/linux/coda_psdev.h
|
||||
+++ b/include/linux/coda_psdev.h
|
||||
@@ -19,6 +19,17 @@ struct venus_comm {
|
||||
struct mutex vc_mutex;
|
||||
};
|
||||
|
||||
+/* messages between coda filesystem in kernel and Venus */
|
||||
+struct upc_req {
|
||||
+ struct list_head uc_chain;
|
||||
+ caddr_t uc_data;
|
||||
+ u_short uc_flags;
|
||||
+ u_short uc_inSize; /* Size is at most 5000 bytes */
|
||||
+ u_short uc_outSize;
|
||||
+ u_short uc_opcode; /* copied from data to save lookup */
|
||||
+ int uc_unique;
|
||||
+ wait_queue_head_t uc_sleep; /* process' wait queue */
|
||||
+};
|
||||
|
||||
static inline struct venus_comm *coda_vcp(struct super_block *sb)
|
||||
{
|
||||
diff --git a/include/uapi/linux/coda_psdev.h b/include/uapi/linux/coda_psdev.h
|
||||
index 79d05981fc4b..e2c44d2f7d5b 100644
|
||||
--- a/include/uapi/linux/coda_psdev.h
|
||||
+++ b/include/uapi/linux/coda_psdev.h
|
||||
@@ -6,19 +6,6 @@
|
||||
#define CODA_PSDEV_MAJOR 67
|
||||
#define MAX_CODADEVS 5 /* how many do we allow */
|
||||
|
||||
-
|
||||
-/* messages between coda filesystem in kernel and Venus */
|
||||
-struct upc_req {
|
||||
- struct list_head uc_chain;
|
||||
- caddr_t uc_data;
|
||||
- u_short uc_flags;
|
||||
- u_short uc_inSize; /* Size is at most 5000 bytes */
|
||||
- u_short uc_outSize;
|
||||
- u_short uc_opcode; /* copied from data to save lookup */
|
||||
- int uc_unique;
|
||||
- wait_queue_head_t uc_sleep; /* process' wait queue */
|
||||
-};
|
||||
-
|
||||
#define CODA_REQ_ASYNC 0x1
|
||||
#define CODA_REQ_READ 0x2
|
||||
#define CODA_REQ_WRITE 0x4
|
||||
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
|
||||
index 6ed74825ab54..2a39784d5704 100644
|
||||
--- a/ipc/mqueue.c
|
||||
+++ b/ipc/mqueue.c
|
||||
@@ -371,7 +371,6 @@ static void mqueue_evict_inode(struct inode *inode)
|
||||
{
|
||||
struct mqueue_inode_info *info;
|
||||
struct user_struct *user;
|
||||
- unsigned long mq_bytes, mq_treesize;
|
||||
struct ipc_namespace *ipc_ns;
|
||||
struct msg_msg *msg, *nmsg;
|
||||
LIST_HEAD(tmp_msg);
|
||||
@@ -394,16 +393,18 @@ static void mqueue_evict_inode(struct inode *inode)
|
||||
free_msg(msg);
|
||||
}
|
||||
|
||||
- /* Total amount of bytes accounted for the mqueue */
|
||||
- mq_treesize = info->attr.mq_maxmsg * sizeof(struct msg_msg) +
|
||||
- min_t(unsigned int, info->attr.mq_maxmsg, MQ_PRIO_MAX) *
|
||||
- sizeof(struct posix_msg_tree_node);
|
||||
-
|
||||
- mq_bytes = mq_treesize + (info->attr.mq_maxmsg *
|
||||
- info->attr.mq_msgsize);
|
||||
-
|
||||
user = info->user;
|
||||
if (user) {
|
||||
+ unsigned long mq_bytes, mq_treesize;
|
||||
+
|
||||
+ /* Total amount of bytes accounted for the mqueue */
|
||||
+ mq_treesize = info->attr.mq_maxmsg * sizeof(struct msg_msg) +
|
||||
+ min_t(unsigned int, info->attr.mq_maxmsg, MQ_PRIO_MAX) *
|
||||
+ sizeof(struct posix_msg_tree_node);
|
||||
+
|
||||
+ mq_bytes = mq_treesize + (info->attr.mq_maxmsg *
|
||||
+ info->attr.mq_msgsize);
|
||||
+
|
||||
spin_lock(&mq_lock);
|
||||
user->mq_bytes -= mq_bytes;
|
||||
/*
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index bcc78f4c15e9..b940b2825b7b 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3225,8 +3225,7 @@ static bool finished_loading(const char *name)
|
||||
sched_annotate_sleep();
|
||||
mutex_lock(&module_mutex);
|
||||
mod = find_module_all(name, strlen(name), true);
|
||||
- ret = !mod || mod->state == MODULE_STATE_LIVE
|
||||
- || mod->state == MODULE_STATE_GOING;
|
||||
+ ret = !mod || mod->state == MODULE_STATE_LIVE;
|
||||
mutex_unlock(&module_mutex);
|
||||
|
||||
return ret;
|
||||
@@ -3385,8 +3384,7 @@ again:
|
||||
mutex_lock(&module_mutex);
|
||||
old = find_module_all(mod->name, strlen(mod->name), true);
|
||||
if (old != NULL) {
|
||||
- if (old->state == MODULE_STATE_COMING
|
||||
- || old->state == MODULE_STATE_UNFORMED) {
|
||||
+ if (old->state != MODULE_STATE_LIVE) {
|
||||
/* Wait in case it fails to load. */
|
||||
mutex_unlock(&module_mutex);
|
||||
err = wait_event_interruptible(module_wq,
|
||||
diff --git a/mm/cma.c b/mm/cma.c
|
||||
index 5ae4452656cd..65c7aa419048 100644
|
||||
--- a/mm/cma.c
|
||||
+++ b/mm/cma.c
|
||||
@@ -268,6 +268,12 @@ int __init cma_declare_contiguous(phys_addr_t base,
|
||||
*/
|
||||
alignment = max(alignment, (phys_addr_t)PAGE_SIZE <<
|
||||
max_t(unsigned long, MAX_ORDER - 1, pageblock_order));
|
||||
+ if (fixed && base & (alignment - 1)) {
|
||||
+ ret = -EINVAL;
|
||||
+ pr_err("Region at %pa must be aligned to %pa bytes\n",
|
||||
+ &base, &alignment);
|
||||
+ goto err;
|
||||
+ }
|
||||
base = ALIGN(base, alignment);
|
||||
size = ALIGN(size, alignment);
|
||||
limit &= ~(alignment - 1);
|
||||
@@ -298,6 +304,13 @@ int __init cma_declare_contiguous(phys_addr_t base,
|
||||
if (limit == 0 || limit > memblock_end)
|
||||
limit = memblock_end;
|
||||
|
||||
+ if (base + size > limit) {
|
||||
+ ret = -EINVAL;
|
||||
+ pr_err("Size (%pa) of region at %pa exceeds limit (%pa)\n",
|
||||
+ &size, &base, &limit);
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
/* Reserve memory */
|
||||
if (fixed) {
|
||||
if (memblock_is_region_reserved(base, size) ||
|
||||
diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c
|
||||
index 965a55eacaba..01fbbbf89f41 100644
|
||||
--- a/security/selinux/ss/policydb.c
|
||||
+++ b/security/selinux/ss/policydb.c
|
||||
@@ -266,6 +266,8 @@ static int rangetr_cmp(struct hashtab *h, const void *k1, const void *k2)
|
||||
return v;
|
||||
}
|
||||
|
||||
+static int (*destroy_f[SYM_NUM]) (void *key, void *datum, void *datap);
|
||||
+
|
||||
/*
|
||||
* Initialize a policy database structure.
|
||||
*/
|
||||
@@ -313,8 +315,10 @@ static int policydb_init(struct policydb *p)
|
||||
out:
|
||||
hashtab_destroy(p->filename_trans);
|
||||
hashtab_destroy(p->range_tr);
|
||||
- for (i = 0; i < SYM_NUM; i++)
|
||||
+ for (i = 0; i < SYM_NUM; i++) {
|
||||
+ hashtab_map(p->symtab[i].table, destroy_f[i], NULL);
|
||||
hashtab_destroy(p->symtab[i].table);
|
||||
+ }
|
||||
return rc;
|
||||
}
|
||||
|
||||
584
patch/kernel/rockchip-default/04-patch-4.4.188-189.patch
Normal file
584
patch/kernel/rockchip-default/04-patch-4.4.188-189.patch
Normal file
@ -0,0 +1,584 @@
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index 175d57049168..7a9fd54a0186 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -2184,6 +2184,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
improves system performance, but it may also
|
||||
expose users to several CPU vulnerabilities.
|
||||
Equivalent to: nopti [X86]
|
||||
+ nospectre_v1 [X86]
|
||||
nospectre_v2 [X86]
|
||||
spectre_v2_user=off [X86]
|
||||
spec_store_bypass_disable=off [X86]
|
||||
@@ -2498,9 +2499,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
|
||||
nohugeiomap [KNL,x86] Disable kernel huge I/O mappings.
|
||||
|
||||
- nospectre_v1 [PPC] Disable mitigations for Spectre Variant 1 (bounds
|
||||
- check bypass). With this option data leaks are possible
|
||||
- in the system.
|
||||
+ nospectre_v1 [X86,PPC] Disable mitigations for Spectre Variant 1
|
||||
+ (bounds check bypass). With this option data leaks are
|
||||
+ possible in the system.
|
||||
|
||||
nospectre_v2 [X86,PPC_FSL_BOOK3E] Disable all mitigations for the Spectre variant 2
|
||||
(indirect branch prediction) vulnerability. System may
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 87d663191986..81a0ada6536f 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 188
|
||||
+SUBLEVEL = 189
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h
|
||||
index ad83c245781c..0a66f8241f18 100644
|
||||
--- a/arch/arm64/include/asm/cpufeature.h
|
||||
+++ b/arch/arm64/include/asm/cpufeature.h
|
||||
@@ -41,9 +41,10 @@
|
||||
|
||||
/* CPU feature register tracking */
|
||||
enum ftr_type {
|
||||
- FTR_EXACT, /* Use a predefined safe value */
|
||||
- FTR_LOWER_SAFE, /* Smaller value is safe */
|
||||
- FTR_HIGHER_SAFE,/* Bigger value is safe */
|
||||
+ FTR_EXACT, /* Use a predefined safe value */
|
||||
+ FTR_LOWER_SAFE, /* Smaller value is safe */
|
||||
+ FTR_HIGHER_SAFE, /* Bigger value is safe */
|
||||
+ FTR_HIGHER_OR_ZERO_SAFE, /* Bigger value is safe, but 0 is biggest */
|
||||
};
|
||||
|
||||
#define FTR_STRICT true /* SANITY check strict matching required */
|
||||
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
|
||||
index c1eddc07d996..062484d34450 100644
|
||||
--- a/arch/arm64/kernel/cpufeature.c
|
||||
+++ b/arch/arm64/kernel/cpufeature.c
|
||||
@@ -126,10 +126,12 @@ static struct arm64_ftr_bits ftr_id_aa64mmfr1[] = {
|
||||
};
|
||||
|
||||
static struct arm64_ftr_bits ftr_ctr[] = {
|
||||
- U_ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RAO */
|
||||
- ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 28, 3, 0),
|
||||
- U_ARM64_FTR_BITS(FTR_STRICT, FTR_HIGHER_SAFE, 24, 4, 0), /* CWG */
|
||||
- U_ARM64_FTR_BITS(FTR_STRICT, FTR_LOWER_SAFE, 20, 4, 0), /* ERG */
|
||||
+ U_ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RES1 */
|
||||
+ ARM64_FTR_BITS(FTR_STRICT, FTR_EXACT, 30, 1, 0),
|
||||
+ U_ARM64_FTR_BITS(FTR_STRICT, FTR_LOWER_SAFE, 29, 1, 1), /* DIC */
|
||||
+ U_ARM64_FTR_BITS(FTR_STRICT, FTR_LOWER_SAFE, 28, 1, 1), /* IDC */
|
||||
+ U_ARM64_FTR_BITS(FTR_STRICT, FTR_HIGHER_OR_ZERO_SAFE, 24, 4, 0), /* CWG */
|
||||
+ U_ARM64_FTR_BITS(FTR_STRICT, FTR_HIGHER_OR_ZERO_SAFE, 20, 4, 0), /* ERG */
|
||||
U_ARM64_FTR_BITS(FTR_STRICT, FTR_LOWER_SAFE, 16, 4, 1), /* DminLine */
|
||||
/*
|
||||
* Linux can handle differing I-cache policies. Userspace JITs will
|
||||
@@ -339,6 +341,10 @@ static s64 arm64_ftr_safe_value(struct arm64_ftr_bits *ftrp, s64 new, s64 cur)
|
||||
case FTR_LOWER_SAFE:
|
||||
ret = new < cur ? new : cur;
|
||||
break;
|
||||
+ case FTR_HIGHER_OR_ZERO_SAFE:
|
||||
+ if (!cur || !new)
|
||||
+ break;
|
||||
+ /* Fallthrough */
|
||||
case FTR_HIGHER_SAFE:
|
||||
ret = new > cur ? new : cur;
|
||||
break;
|
||||
diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h
|
||||
index 3c71dd947c7b..5e24cd248728 100644
|
||||
--- a/arch/x86/entry/calling.h
|
||||
+++ b/arch/x86/entry/calling.h
|
||||
@@ -1,3 +1,5 @@
|
||||
+#include <asm/cpufeatures.h>
|
||||
+
|
||||
/*
|
||||
|
||||
x86 function call convention, 64-bit:
|
||||
@@ -199,6 +201,23 @@ For 32-bit we have the following conventions - kernel is built with
|
||||
.byte 0xf1
|
||||
.endm
|
||||
|
||||
+/*
|
||||
+ * Mitigate Spectre v1 for conditional swapgs code paths.
|
||||
+ *
|
||||
+ * FENCE_SWAPGS_USER_ENTRY is used in the user entry swapgs code path, to
|
||||
+ * prevent a speculative swapgs when coming from kernel space.
|
||||
+ *
|
||||
+ * FENCE_SWAPGS_KERNEL_ENTRY is used in the kernel entry non-swapgs code path,
|
||||
+ * to prevent the swapgs from getting speculatively skipped when coming from
|
||||
+ * user space.
|
||||
+ */
|
||||
+.macro FENCE_SWAPGS_USER_ENTRY
|
||||
+ ALTERNATIVE "", "lfence", X86_FEATURE_FENCE_SWAPGS_USER
|
||||
+.endm
|
||||
+.macro FENCE_SWAPGS_KERNEL_ENTRY
|
||||
+ ALTERNATIVE "", "lfence", X86_FEATURE_FENCE_SWAPGS_KERNEL
|
||||
+.endm
|
||||
+
|
||||
#else /* CONFIG_X86_64 */
|
||||
|
||||
/*
|
||||
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
|
||||
index 375ed605c83d..afb805b0148b 100644
|
||||
--- a/arch/x86/entry/entry_64.S
|
||||
+++ b/arch/x86/entry/entry_64.S
|
||||
@@ -551,6 +551,7 @@ END(irq_entries_start)
|
||||
* tracking that we're in kernel mode.
|
||||
*/
|
||||
SWAPGS
|
||||
+ FENCE_SWAPGS_USER_ENTRY
|
||||
SWITCH_KERNEL_CR3
|
||||
|
||||
/*
|
||||
@@ -566,8 +567,10 @@ END(irq_entries_start)
|
||||
#ifdef CONFIG_CONTEXT_TRACKING
|
||||
call enter_from_user_mode
|
||||
#endif
|
||||
-
|
||||
+ jmp 2f
|
||||
1:
|
||||
+ FENCE_SWAPGS_KERNEL_ENTRY
|
||||
+2:
|
||||
/*
|
||||
* Save previous stack pointer, optionally switch to interrupt stack.
|
||||
* irq_count is used to check if a CPU is already on an interrupt stack
|
||||
@@ -1077,6 +1080,13 @@ ENTRY(paranoid_entry)
|
||||
movq %rax, %cr3
|
||||
2:
|
||||
#endif
|
||||
+ /*
|
||||
+ * The above doesn't do an unconditional CR3 write, even in the PTI
|
||||
+ * case. So do an lfence to prevent GS speculation, regardless of
|
||||
+ * whether PTI is enabled.
|
||||
+ */
|
||||
+ FENCE_SWAPGS_KERNEL_ENTRY
|
||||
+
|
||||
ret
|
||||
END(paranoid_entry)
|
||||
|
||||
@@ -1133,12 +1143,12 @@ ENTRY(error_entry)
|
||||
testb $3, CS+8(%rsp)
|
||||
jz .Lerror_kernelspace
|
||||
|
||||
-.Lerror_entry_from_usermode_swapgs:
|
||||
/*
|
||||
* We entered from user mode or we're pretending to have entered
|
||||
* from user mode due to an IRET fault.
|
||||
*/
|
||||
SWAPGS
|
||||
+ FENCE_SWAPGS_USER_ENTRY
|
||||
|
||||
.Lerror_entry_from_usermode_after_swapgs:
|
||||
/*
|
||||
@@ -1152,6 +1162,8 @@ ENTRY(error_entry)
|
||||
#endif
|
||||
ret
|
||||
|
||||
+.Lerror_entry_done_lfence:
|
||||
+ FENCE_SWAPGS_KERNEL_ENTRY
|
||||
.Lerror_entry_done:
|
||||
TRACE_IRQS_OFF
|
||||
ret
|
||||
@@ -1170,14 +1182,16 @@ ENTRY(error_entry)
|
||||
cmpq %rax, RIP+8(%rsp)
|
||||
je .Lbstep_iret
|
||||
cmpq $gs_change, RIP+8(%rsp)
|
||||
- jne .Lerror_entry_done
|
||||
+ jne .Lerror_entry_done_lfence
|
||||
|
||||
/*
|
||||
* hack: gs_change can fail with user gsbase. If this happens, fix up
|
||||
* gsbase and proceed. We'll fix up the exception and land in
|
||||
* gs_change's error handler with kernel gsbase.
|
||||
*/
|
||||
- jmp .Lerror_entry_from_usermode_swapgs
|
||||
+ SWAPGS
|
||||
+ FENCE_SWAPGS_USER_ENTRY
|
||||
+ jmp .Lerror_entry_done
|
||||
|
||||
.Lbstep_iret:
|
||||
/* Fix truncated RIP */
|
||||
@@ -1190,6 +1204,7 @@ ENTRY(error_entry)
|
||||
* Switch to kernel gsbase:
|
||||
*/
|
||||
SWAPGS
|
||||
+ FENCE_SWAPGS_USER_ENTRY
|
||||
|
||||
/*
|
||||
* Pretend that the exception came from user mode: set up pt_regs
|
||||
@@ -1286,6 +1301,7 @@ ENTRY(nmi)
|
||||
* to switch CR3 here.
|
||||
*/
|
||||
cld
|
||||
+ FENCE_SWAPGS_USER_ENTRY
|
||||
movq %rsp, %rdx
|
||||
movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
|
||||
pushq 5*8(%rdx) /* pt_regs->ss */
|
||||
@@ -1574,6 +1590,7 @@ end_repeat_nmi:
|
||||
movq %rax, %cr3
|
||||
2:
|
||||
#endif
|
||||
+ FENCE_SWAPGS_KERNEL_ENTRY
|
||||
|
||||
/* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
|
||||
call do_nmi
|
||||
diff --git a/block/blk-core.c b/block/blk-core.c
|
||||
index 50d77c90070d..7662f97dded6 100644
|
||||
--- a/block/blk-core.c
|
||||
+++ b/block/blk-core.c
|
||||
@@ -870,6 +870,7 @@ blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn,
|
||||
|
||||
fail:
|
||||
blk_free_flush_queue(q->fq);
|
||||
+ q->fq = NULL;
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(blk_init_allocated_queue);
|
||||
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c
|
||||
index 7d00f2994738..860a33a90ebf 100644
|
||||
--- a/drivers/atm/iphase.c
|
||||
+++ b/drivers/atm/iphase.c
|
||||
@@ -63,6 +63,7 @@
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/jiffies.h>
|
||||
+#include <linux/nospec.h>
|
||||
#include "iphase.h"
|
||||
#include "suni.h"
|
||||
#define swap_byte_order(x) (((x & 0xff) << 8) | ((x & 0xff00) >> 8))
|
||||
@@ -2755,8 +2756,11 @@ static int ia_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg)
|
||||
}
|
||||
if (copy_from_user(&ia_cmds, arg, sizeof ia_cmds)) return -EFAULT;
|
||||
board = ia_cmds.status;
|
||||
- if ((board < 0) || (board > iadev_count))
|
||||
- board = 0;
|
||||
+
|
||||
+ if ((board < 0) || (board > iadev_count))
|
||||
+ board = 0;
|
||||
+ board = array_index_nospec(board, iadev_count + 1);
|
||||
+
|
||||
iadev = ia_dev[board];
|
||||
switch (ia_cmds.cmd) {
|
||||
case MEMDUMP:
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 00d8366a614e..e1807296a1a0 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -470,6 +470,7 @@
|
||||
#define USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A 0x0a4a
|
||||
#define USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A 0x0b4a
|
||||
#define USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE 0x134a
|
||||
+#define USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0641 0x0641
|
||||
|
||||
#define USB_VENDOR_ID_HUION 0x256c
|
||||
#define USB_DEVICE_ID_HUION_TABLET 0x006e
|
||||
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
|
||||
index c9a11315493b..5dcdfdca4fd7 100644
|
||||
--- a/drivers/hid/usbhid/hid-quirks.c
|
||||
+++ b/drivers/hid/usbhid/hid-quirks.c
|
||||
@@ -82,6 +82,7 @@ static const struct hid_blacklist {
|
||||
{ USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A, HID_QUIRK_ALWAYS_POLL },
|
||||
{ USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A, HID_QUIRK_ALWAYS_POLL },
|
||||
{ USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE, HID_QUIRK_ALWAYS_POLL },
|
||||
+ { USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE_0641, HID_QUIRK_ALWAYS_POLL },
|
||||
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077, HID_QUIRK_ALWAYS_POLL },
|
||||
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS, HID_QUIRK_NOGET },
|
||||
{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C01A, HID_QUIRK_ALWAYS_POLL },
|
||||
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
||||
index 4dc5e12dbfce..13de5ce3facf 100644
|
||||
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
|
||||
@@ -1957,7 +1957,7 @@ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||
}
|
||||
|
||||
/* select a non-FCoE queue */
|
||||
- return fallback(dev, skb) % (BNX2X_NUM_ETH_QUEUES(bp) * bp->max_cos);
|
||||
+ return fallback(dev, skb) % (BNX2X_NUM_ETH_QUEUES(bp));
|
||||
}
|
||||
|
||||
void bnx2x_set_num_queues(struct bnx2x *bp)
|
||||
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
|
||||
index 7c42be586be8..35bcc6dbada9 100644
|
||||
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
|
||||
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
|
||||
@@ -778,7 +778,7 @@ static void mlx5_unregister_device(struct mlx5_core_dev *dev)
|
||||
struct mlx5_interface *intf;
|
||||
|
||||
mutex_lock(&intf_mutex);
|
||||
- list_for_each_entry(intf, &intf_list, list)
|
||||
+ list_for_each_entry_reverse(intf, &intf_list, list)
|
||||
mlx5_remove_device(intf, priv);
|
||||
list_del(&priv->dev_list);
|
||||
mutex_unlock(&intf_mutex);
|
||||
diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c
|
||||
index 02327e6c4819..39976892b312 100644
|
||||
--- a/drivers/net/ppp/pppoe.c
|
||||
+++ b/drivers/net/ppp/pppoe.c
|
||||
@@ -1152,6 +1152,9 @@ static const struct proto_ops pppoe_ops = {
|
||||
.recvmsg = pppoe_recvmsg,
|
||||
.mmap = sock_no_mmap,
|
||||
.ioctl = pppox_ioctl,
|
||||
+#ifdef CONFIG_COMPAT
|
||||
+ .compat_ioctl = pppox_compat_ioctl,
|
||||
+#endif
|
||||
};
|
||||
|
||||
static const struct pppox_proto pppoe_proto = {
|
||||
diff --git a/drivers/net/ppp/pppox.c b/drivers/net/ppp/pppox.c
|
||||
index 0e1b30622477..011fbd10cb73 100644
|
||||
--- a/drivers/net/ppp/pppox.c
|
||||
+++ b/drivers/net/ppp/pppox.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
+#include <linux/compat.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/net.h>
|
||||
@@ -103,6 +104,18 @@ int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
|
||||
EXPORT_SYMBOL(pppox_ioctl);
|
||||
|
||||
+#ifdef CONFIG_COMPAT
|
||||
+int pppox_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
+{
|
||||
+ if (cmd == PPPOEIOCSFWD32)
|
||||
+ cmd = PPPOEIOCSFWD;
|
||||
+
|
||||
+ return pppox_ioctl(sock, cmd, (unsigned long)compat_ptr(arg));
|
||||
+}
|
||||
+
|
||||
+EXPORT_SYMBOL(pppox_compat_ioctl);
|
||||
+#endif
|
||||
+
|
||||
static int pppox_create(struct net *net, struct socket *sock, int protocol,
|
||||
int kern)
|
||||
{
|
||||
diff --git a/drivers/net/ppp/pptp.c b/drivers/net/ppp/pptp.c
|
||||
index 53c1f2bd0f24..19d0692a2d2f 100644
|
||||
--- a/drivers/net/ppp/pptp.c
|
||||
+++ b/drivers/net/ppp/pptp.c
|
||||
@@ -674,6 +674,9 @@ static const struct proto_ops pptp_ops = {
|
||||
.recvmsg = sock_no_recvmsg,
|
||||
.mmap = sock_no_mmap,
|
||||
.ioctl = pppox_ioctl,
|
||||
+#ifdef CONFIG_COMPAT
|
||||
+ .compat_ioctl = pppox_compat_ioctl,
|
||||
+#endif
|
||||
};
|
||||
|
||||
static const struct pppox_proto pppox_pptp_proto = {
|
||||
diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
|
||||
index 1a1368f5863c..25daebd6f410 100644
|
||||
--- a/drivers/spi/spi-bcm2835.c
|
||||
+++ b/drivers/spi/spi-bcm2835.c
|
||||
@@ -554,7 +554,8 @@ static int bcm2835_spi_transfer_one(struct spi_master *master,
|
||||
bcm2835_wr(bs, BCM2835_SPI_CLK, cdiv);
|
||||
|
||||
/* handle all the 3-wire mode */
|
||||
- if ((spi->mode & SPI_3WIRE) && (tfr->rx_buf))
|
||||
+ if (spi->mode & SPI_3WIRE && tfr->rx_buf &&
|
||||
+ tfr->rx_buf != master->dummy_rx)
|
||||
cs |= BCM2835_SPI_CS_REN;
|
||||
else
|
||||
cs &= ~BCM2835_SPI_CS_REN;
|
||||
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
|
||||
index a52ca5cba015..5af973621c73 100644
|
||||
--- a/fs/compat_ioctl.c
|
||||
+++ b/fs/compat_ioctl.c
|
||||
@@ -1016,9 +1016,6 @@ COMPATIBLE_IOCTL(PPPIOCDISCONN)
|
||||
COMPATIBLE_IOCTL(PPPIOCATTCHAN)
|
||||
COMPATIBLE_IOCTL(PPPIOCGCHAN)
|
||||
COMPATIBLE_IOCTL(PPPIOCGL2TPSTATS)
|
||||
-/* PPPOX */
|
||||
-COMPATIBLE_IOCTL(PPPOEIOCSFWD)
|
||||
-COMPATIBLE_IOCTL(PPPOEIOCDFWD)
|
||||
/* ppdev */
|
||||
COMPATIBLE_IOCTL(PPSETMODE)
|
||||
COMPATIBLE_IOCTL(PPRSTATUS)
|
||||
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
|
||||
index b49cf923becc..93ef387eadb1 100644
|
||||
--- a/include/linux/if_pppox.h
|
||||
+++ b/include/linux/if_pppox.h
|
||||
@@ -84,6 +84,9 @@ extern int register_pppox_proto(int proto_num, const struct pppox_proto *pp);
|
||||
extern void unregister_pppox_proto(int proto_num);
|
||||
extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
|
||||
extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||
+extern int pppox_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||
+
|
||||
+#define PPPOEIOCSFWD32 _IOW(0xB1 ,0, compat_size_t)
|
||||
|
||||
/* PPPoX socket states */
|
||||
enum {
|
||||
diff --git a/include/net/tcp.h b/include/net/tcp.h
|
||||
index 77438a8406ec..0410fd29d569 100644
|
||||
--- a/include/net/tcp.h
|
||||
+++ b/include/net/tcp.h
|
||||
@@ -1526,6 +1526,23 @@ static inline void tcp_check_send_head(struct sock *sk, struct sk_buff *skb_unli
|
||||
tcp_sk(sk)->highest_sack = NULL;
|
||||
}
|
||||
|
||||
+static inline struct sk_buff *tcp_rtx_queue_head(const struct sock *sk)
|
||||
+{
|
||||
+ struct sk_buff *skb = tcp_write_queue_head(sk);
|
||||
+
|
||||
+ if (skb == tcp_send_head(sk))
|
||||
+ skb = NULL;
|
||||
+
|
||||
+ return skb;
|
||||
+}
|
||||
+
|
||||
+static inline struct sk_buff *tcp_rtx_queue_tail(const struct sock *sk)
|
||||
+{
|
||||
+ struct sk_buff *skb = tcp_send_head(sk);
|
||||
+
|
||||
+ return skb ? tcp_write_queue_prev(sk, skb) : tcp_write_queue_tail(sk);
|
||||
+}
|
||||
+
|
||||
static inline void __tcp_add_write_queue_tail(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
__skb_queue_tail(&sk->sk_write_queue, skb);
|
||||
diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c
|
||||
index 1394da63614a..a7953962112a 100644
|
||||
--- a/net/bridge/br_vlan.c
|
||||
+++ b/net/bridge/br_vlan.c
|
||||
@@ -580,6 +580,11 @@ void br_vlan_flush(struct net_bridge *br)
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
+ /* delete auto-added default pvid local fdb before flushing vlans
|
||||
+ * otherwise it will be leaked on bridge device init failure
|
||||
+ */
|
||||
+ br_fdb_delete_by_port(br, NULL, 0, 1);
|
||||
+
|
||||
vg = br_vlan_group(br);
|
||||
__vlan_flush(vg);
|
||||
RCU_INIT_POINTER(br->vlgrp, NULL);
|
||||
diff --git a/net/core/dev.c b/net/core/dev.c
|
||||
index db5345f5f7b0..152e1e6316e6 100644
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -7768,6 +7768,8 @@ static void __net_exit default_device_exit(struct net *net)
|
||||
|
||||
/* Push remaining network devices to init_net */
|
||||
snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
|
||||
+ if (__dev_get_by_name(&init_net, fb_name))
|
||||
+ snprintf(fb_name, IFNAMSIZ, "dev%%d");
|
||||
err = dev_change_net_namespace(dev, &init_net, fb_name);
|
||||
if (err) {
|
||||
pr_emerg("%s: failed to move %s to init_net: %d\n",
|
||||
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
|
||||
index 53edd60fd381..76ffce0c18ae 100644
|
||||
--- a/net/ipv4/tcp_output.c
|
||||
+++ b/net/ipv4/tcp_output.c
|
||||
@@ -1151,6 +1151,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len,
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
struct sk_buff *buff;
|
||||
int nsize, old_factor;
|
||||
+ long limit;
|
||||
int nlen;
|
||||
u8 flags;
|
||||
|
||||
@@ -1161,7 +1162,15 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len,
|
||||
if (nsize < 0)
|
||||
nsize = 0;
|
||||
|
||||
- if (unlikely((sk->sk_wmem_queued >> 1) > sk->sk_sndbuf + 0x20000)) {
|
||||
+ /* tcp_sendmsg() can overshoot sk_wmem_queued by one full size skb.
|
||||
+ * We need some allowance to not penalize applications setting small
|
||||
+ * SO_SNDBUF values.
|
||||
+ * Also allow first and last skb in retransmit queue to be split.
|
||||
+ */
|
||||
+ limit = sk->sk_sndbuf + 2 * SKB_TRUESIZE(GSO_MAX_SIZE);
|
||||
+ if (unlikely((sk->sk_wmem_queued >> 1) > limit &&
|
||||
+ skb != tcp_rtx_queue_head(sk) &&
|
||||
+ skb != tcp_rtx_queue_tail(sk))) {
|
||||
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPWQUEUETOOBIG);
|
||||
return -ENOMEM;
|
||||
}
|
||||
diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
|
||||
index 2764c4bd072c..d3f1222c1a8c 100644
|
||||
--- a/net/l2tp/l2tp_ppp.c
|
||||
+++ b/net/l2tp/l2tp_ppp.c
|
||||
@@ -1805,6 +1805,9 @@ static const struct proto_ops pppol2tp_ops = {
|
||||
.recvmsg = pppol2tp_recvmsg,
|
||||
.mmap = sock_no_mmap,
|
||||
.ioctl = pppox_ioctl,
|
||||
+#ifdef CONFIG_COMPAT
|
||||
+ .compat_ioctl = pppox_compat_ioctl,
|
||||
+#endif
|
||||
};
|
||||
|
||||
static const struct pppox_proto pppol2tp_proto = {
|
||||
diff --git a/net/netfilter/nfnetlink_acct.c b/net/netfilter/nfnetlink_acct.c
|
||||
index 088e8da06b00..0f3cb410e42e 100644
|
||||
--- a/net/netfilter/nfnetlink_acct.c
|
||||
+++ b/net/netfilter/nfnetlink_acct.c
|
||||
@@ -97,6 +97,8 @@ nfnl_acct_new(struct sock *nfnl, struct sk_buff *skb,
|
||||
return -EINVAL;
|
||||
if (flags & NFACCT_F_OVERQUOTA)
|
||||
return -EINVAL;
|
||||
+ if ((flags & NFACCT_F_QUOTA) && !tb[NFACCT_QUOTA])
|
||||
+ return -EINVAL;
|
||||
|
||||
size += sizeof(u64);
|
||||
}
|
||||
diff --git a/net/sched/sch_codel.c b/net/sched/sch_codel.c
|
||||
index 9b7e2980ee5c..3bc5dec3b17b 100644
|
||||
--- a/net/sched/sch_codel.c
|
||||
+++ b/net/sched/sch_codel.c
|
||||
@@ -68,7 +68,8 @@ static struct sk_buff *dequeue(struct codel_vars *vars, struct Qdisc *sch)
|
||||
{
|
||||
struct sk_buff *skb = __skb_dequeue(&sch->q);
|
||||
|
||||
- prefetch(&skb->end); /* we'll need skb_shinfo() */
|
||||
+ if (skb)
|
||||
+ prefetch(&skb->end); /* we'll need skb_shinfo() */
|
||||
return skb;
|
||||
}
|
||||
|
||||
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c
|
||||
index 9a65664f749c..d2bf92e71150 100644
|
||||
--- a/net/tipc/netlink_compat.c
|
||||
+++ b/net/tipc/netlink_compat.c
|
||||
@@ -55,6 +55,7 @@ struct tipc_nl_compat_msg {
|
||||
int rep_type;
|
||||
int rep_size;
|
||||
int req_type;
|
||||
+ int req_size;
|
||||
struct net *net;
|
||||
struct sk_buff *rep;
|
||||
struct tlv_desc *req;
|
||||
@@ -252,7 +253,8 @@ static int tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd,
|
||||
int err;
|
||||
struct sk_buff *arg;
|
||||
|
||||
- if (msg->req_type && !TLV_CHECK_TYPE(msg->req, msg->req_type))
|
||||
+ if (msg->req_type && (!msg->req_size ||
|
||||
+ !TLV_CHECK_TYPE(msg->req, msg->req_type)))
|
||||
return -EINVAL;
|
||||
|
||||
msg->rep = tipc_tlv_alloc(msg->rep_size);
|
||||
@@ -345,7 +347,8 @@ static int tipc_nl_compat_doit(struct tipc_nl_compat_cmd_doit *cmd,
|
||||
{
|
||||
int err;
|
||||
|
||||
- if (msg->req_type && !TLV_CHECK_TYPE(msg->req, msg->req_type))
|
||||
+ if (msg->req_type && (!msg->req_size ||
|
||||
+ !TLV_CHECK_TYPE(msg->req, msg->req_type)))
|
||||
return -EINVAL;
|
||||
|
||||
err = __tipc_nl_compat_doit(cmd, msg);
|
||||
@@ -1192,8 +1195,8 @@ static int tipc_nl_compat_recv(struct sk_buff *skb, struct genl_info *info)
|
||||
goto send;
|
||||
}
|
||||
|
||||
- len = nlmsg_attrlen(req_nlh, GENL_HDRLEN + TIPC_GENL_HDRLEN);
|
||||
- if (!len || !TLV_OK(msg.req, len)) {
|
||||
+ msg.req_size = nlmsg_attrlen(req_nlh, GENL_HDRLEN + TIPC_GENL_HDRLEN);
|
||||
+ if (msg.req_size && !TLV_OK(msg.req, msg.req_size)) {
|
||||
msg.rep = tipc_get_err_tlv(TIPC_CFG_NOT_SUPPORTED);
|
||||
err = -EOPNOTSUPP;
|
||||
goto send;
|
||||
1939
patch/kernel/rockchip-default/04-patch-4.4.189-190.patch
Normal file
1939
patch/kernel/rockchip-default/04-patch-4.4.189-190.patch
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user