mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-25 16:21:32 +00:00
[Rockchip64] Adjust default branch, removed deprecated patches, adjust configuration, fix broken patch.
This commit is contained in:
parent
6fbb6b8777
commit
e87775e14f
21 changed files with 3127 additions and 25259 deletions
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.4.159 Kernel Configuration
|
||||
# Linux/arm64 4.4.160 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
|
@ -576,7 +576,6 @@ CONFIG_CPU_FREQ_TIMES=y
|
|||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
|
@ -1752,6 +1751,7 @@ CONFIG_DM_VERITY_HASH_PREFETCH_MIN_SIZE=1
|
|||
CONFIG_DM_SWITCH=m
|
||||
CONFIG_DM_LOG_WRITES=m
|
||||
# CONFIG_DM_VERITY_AVB is not set
|
||||
# CONFIG_DM_ANDROID_VERITY_AT_MOST_ONCE_DEFAULT_ENABLED is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
|
@ -2226,6 +2226,7 @@ CONFIG_RTL8XXXU_UNTESTED=y
|
|||
CONFIG_WL_ROCKCHIP=y
|
||||
# CONFIG_WIFI_BUILD_MODULE is not set
|
||||
# CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP is not set
|
||||
# CONFIG_WIFI_GENERATE_RANDOM_MAC_ADDR is not set
|
||||
CONFIG_AP6XXX=m
|
||||
CONFIG_CYW_BCMDHD=m
|
||||
# CONFIG_RTL_WIRELESS_SOLUTION is not set
|
||||
|
@ -2239,6 +2240,11 @@ CONFIG_RTL8723BU=m
|
|||
# CONFIG_RTL8822BE is not set
|
||||
# CONFIG_RTL8822BS is not set
|
||||
CONFIG_MVL88W8977=m
|
||||
|
||||
#
|
||||
# SouthSV 6XXX WLAN support
|
||||
#
|
||||
# CONFIG_SSV6051 is not set
|
||||
# CONFIG_WL_TI is not set
|
||||
CONFIG_ZD1211RW=m
|
||||
# CONFIG_ZD1211RW_DEBUG is not set
|
||||
|
@ -2557,6 +2563,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
|
|||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
|
||||
CONFIG_HW_RANDOM_TPM=y
|
||||
CONFIG_HW_RANDOM_ROCKCHIP=m
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
|
||||
|
@ -3548,6 +3555,11 @@ CONFIG_VIDEO_OV13850=y
|
|||
# CONFIG_VIDEO_S5K5BAF is not set
|
||||
# CONFIG_VIDEO_SMIAPP is not set
|
||||
# CONFIG_VIDEO_S5C73M3 is not set
|
||||
# CONFIG_VIDEO_GC2155 is not set
|
||||
# CONFIG_VIDEO_GC0312 is not set
|
||||
# CONFIG_VIDEO_GC2145 is not set
|
||||
# CONFIG_VIDEO_GC0329 is not set
|
||||
# CONFIG_VIDEO_GC2035 is not set
|
||||
|
||||
#
|
||||
# Flash devices
|
||||
|
@ -3563,6 +3575,11 @@ CONFIG_VIDEO_OV13850=y
|
|||
# CONFIG_VIDEO_UPD64031A is not set
|
||||
# CONFIG_VIDEO_UPD64083 is not set
|
||||
|
||||
#
|
||||
# Camera lens devices
|
||||
#
|
||||
# CONFIG_VIDEO_VM149C is not set
|
||||
|
||||
#
|
||||
# Audio/Video compression chips
|
||||
#
|
||||
|
@ -4175,12 +4192,13 @@ CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m
|
|||
# CONFIG_SND_SOC_ROCKCHIP_MULTI_DAIS is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_PDM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_SPDIFRX is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_VAD is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_DA7219 is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_HDMI_ANALOG=m
|
||||
CONFIG_SND_SOC_ROCKCHIP_HDMI_DP=m
|
||||
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
|
||||
CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=m
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTICODECS is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_RT5651_TC358749 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_CDNDP is not set
|
||||
|
@ -4816,6 +4834,7 @@ CONFIG_RTC_DRV_FAKE=y
|
|||
CONFIG_RTC_DRV_HYM8563=y
|
||||
# CONFIG_RTC_DRV_MAX6900 is not set
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
# CONFIG_RTC_DRV_RK_TIMER is not set
|
||||
# CONFIG_RTC_DRV_RS5C372 is not set
|
||||
# CONFIG_RTC_DRV_ISL1208 is not set
|
||||
# CONFIG_RTC_DRV_ISL12022 is not set
|
||||
|
@ -5148,6 +5167,7 @@ CONFIG_CPU_RK3399=y
|
|||
CONFIG_ANDROID_VERSION=0x07010000
|
||||
CONFIG_ROCKCHIP_CPUINFO=y
|
||||
# CONFIG_ROCKCHIP_DEVICEINFO is not set
|
||||
CONFIG_ROCKCHIP_OPP=y
|
||||
# CONFIG_ROCKCHIP_PM_TEST is not set
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
|
|
|
@ -42,7 +42,7 @@ fi
|
|||
case $BRANCH in
|
||||
default)
|
||||
KERNELSOURCE='https://github.com/ayufan-rock64/linux-kernel'
|
||||
KERNELBRANCH='tag:4.4.138-1094-rockchip-ayufan'
|
||||
KERNELBRANCH='tag:4.4.154-1122-rockchip-ayufan'
|
||||
KERNELDIR='linux-rockchip64'
|
||||
KERNEL_USE_GCC='> 7.0'
|
||||
;;
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,186 +0,0 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 3fc39e41dbde..75d6176c8786 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 141
|
||||
+SUBLEVEL = 142
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
|
||||
index 814276d0eed1..736e2843139b 100644
|
||||
--- a/arch/x86/kernel/cpu/common.c
|
||||
+++ b/arch/x86/kernel/cpu/common.c
|
||||
@@ -686,13 +686,14 @@ void get_cpu_cap(struct cpuinfo_x86 *c)
|
||||
c->x86_capability[CPUID_1_EDX] = edx;
|
||||
}
|
||||
|
||||
+ /* Thermal and Power Management Leaf: level 0x00000006 (eax) */
|
||||
+ if (c->cpuid_level >= 0x00000006)
|
||||
+ c->x86_capability[CPUID_6_EAX] = cpuid_eax(0x00000006);
|
||||
+
|
||||
/* Additional Intel-defined flags: level 0x00000007 */
|
||||
if (c->cpuid_level >= 0x00000007) {
|
||||
cpuid_count(0x00000007, 0, &eax, &ebx, &ecx, &edx);
|
||||
-
|
||||
c->x86_capability[CPUID_7_0_EBX] = ebx;
|
||||
-
|
||||
- c->x86_capability[CPUID_6_EAX] = cpuid_eax(0x00000006);
|
||||
c->x86_capability[CPUID_7_ECX] = ecx;
|
||||
}
|
||||
|
||||
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
|
||||
index 1db6d73c8dd2..31a981d6229d 100644
|
||||
--- a/scripts/Kbuild.include
|
||||
+++ b/scripts/Kbuild.include
|
||||
@@ -7,6 +7,7 @@ quote := "
|
||||
squote := '
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
+pound := \#
|
||||
|
||||
###
|
||||
# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
|
||||
@@ -236,11 +237,11 @@ endif
|
||||
|
||||
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
||||
# (needed for make)
|
||||
-# Replace >#< with >\#< to avoid starting a comment in the .cmd file
|
||||
+# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
|
||||
# (needed for make)
|
||||
# Replace >'< with >'\''< to be able to enclose the whole string in '...'
|
||||
# (needed for the shell)
|
||||
-make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
+make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
|
||||
# Find any prerequisites that is newer than target or that does not exist.
|
||||
# PHONY targets skipped in both cases.
|
||||
diff --git a/tools/arch/x86/include/asm/unistd_32.h b/tools/arch/x86/include/asm/unistd_32.h
|
||||
new file mode 100644
|
||||
index 000000000000..cf33ab09273d
|
||||
--- /dev/null
|
||||
+++ b/tools/arch/x86/include/asm/unistd_32.h
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef __NR_perf_event_open
|
||||
+# define __NR_perf_event_open 336
|
||||
+#endif
|
||||
+#ifndef __NR_futex
|
||||
+# define __NR_futex 240
|
||||
+#endif
|
||||
+#ifndef __NR_gettid
|
||||
+# define __NR_gettid 224
|
||||
+#endif
|
||||
diff --git a/tools/arch/x86/include/asm/unistd_64.h b/tools/arch/x86/include/asm/unistd_64.h
|
||||
new file mode 100644
|
||||
index 000000000000..2c9835695b56
|
||||
--- /dev/null
|
||||
+++ b/tools/arch/x86/include/asm/unistd_64.h
|
||||
@@ -0,0 +1,9 @@
|
||||
+#ifndef __NR_perf_event_open
|
||||
+# define __NR_perf_event_open 298
|
||||
+#endif
|
||||
+#ifndef __NR_futex
|
||||
+# define __NR_futex 202
|
||||
+#endif
|
||||
+#ifndef __NR_gettid
|
||||
+# define __NR_gettid 186
|
||||
+#endif
|
||||
diff --git a/tools/build/Build.include b/tools/build/Build.include
|
||||
index 1c570528baf7..0340d8a51dab 100644
|
||||
--- a/tools/build/Build.include
|
||||
+++ b/tools/build/Build.include
|
||||
@@ -12,6 +12,7 @@
|
||||
# Convenient variables
|
||||
comma := ,
|
||||
squote := '
|
||||
+pound := \#
|
||||
|
||||
###
|
||||
# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
|
||||
@@ -43,11 +44,11 @@ echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
||||
###
|
||||
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
||||
# (needed for make)
|
||||
-# Replace >#< with >\#< to avoid starting a comment in the .cmd file
|
||||
+# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
|
||||
# (needed for make)
|
||||
# Replace >'< with >'\''< to be able to enclose the whole string in '...'
|
||||
# (needed for the shell)
|
||||
-make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
+make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
|
||||
|
||||
###
|
||||
# Find any prerequisites that is newer than target or that does not exist.
|
||||
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
|
||||
index de89ec574361..b92c952b01ef 100644
|
||||
--- a/tools/perf/config/Makefile
|
||||
+++ b/tools/perf/config/Makefile
|
||||
@@ -200,6 +200,7 @@ CFLAGS += -I$(src-perf)/arch/$(ARCH)/include
|
||||
CFLAGS += -I$(srctree)/tools/include/
|
||||
CFLAGS += -I$(srctree)/arch/$(ARCH)/include/uapi
|
||||
CFLAGS += -I$(srctree)/arch/$(ARCH)/include
|
||||
+CFLAGS += -I$(srctree)/tools/arch/$(ARCH)/include
|
||||
CFLAGS += -I$(srctree)/include/uapi
|
||||
CFLAGS += -I$(srctree)/include
|
||||
|
||||
diff --git a/tools/perf/perf-sys.h b/tools/perf/perf-sys.h
|
||||
index 83a25cef82fd..5cee8a3d0455 100644
|
||||
--- a/tools/perf/perf-sys.h
|
||||
+++ b/tools/perf/perf-sys.h
|
||||
@@ -11,29 +11,11 @@
|
||||
#if defined(__i386__)
|
||||
#define cpu_relax() asm volatile("rep; nop" ::: "memory");
|
||||
#define CPUINFO_PROC {"model name"}
|
||||
-#ifndef __NR_perf_event_open
|
||||
-# define __NR_perf_event_open 336
|
||||
-#endif
|
||||
-#ifndef __NR_futex
|
||||
-# define __NR_futex 240
|
||||
-#endif
|
||||
-#ifndef __NR_gettid
|
||||
-# define __NR_gettid 224
|
||||
-#endif
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64__)
|
||||
#define cpu_relax() asm volatile("rep; nop" ::: "memory");
|
||||
#define CPUINFO_PROC {"model name"}
|
||||
-#ifndef __NR_perf_event_open
|
||||
-# define __NR_perf_event_open 298
|
||||
-#endif
|
||||
-#ifndef __NR_futex
|
||||
-# define __NR_futex 202
|
||||
-#endif
|
||||
-#ifndef __NR_gettid
|
||||
-# define __NR_gettid 186
|
||||
-#endif
|
||||
#endif
|
||||
|
||||
#ifdef __powerpc__
|
||||
diff --git a/tools/perf/util/include/asm/unistd_32.h b/tools/perf/util/include/asm/unistd_32.h
|
||||
deleted file mode 100644
|
||||
index 8b137891791f..000000000000
|
||||
--- a/tools/perf/util/include/asm/unistd_32.h
|
||||
+++ /dev/null
|
||||
@@ -1 +0,0 @@
|
||||
-
|
||||
diff --git a/tools/perf/util/include/asm/unistd_64.h b/tools/perf/util/include/asm/unistd_64.h
|
||||
deleted file mode 100644
|
||||
index 8b137891791f..000000000000
|
||||
--- a/tools/perf/util/include/asm/unistd_64.h
|
||||
+++ /dev/null
|
||||
@@ -1 +0,0 @@
|
||||
-
|
||||
diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include
|
||||
index 19edc1a7a232..7ea4438b801d 100644
|
||||
--- a/tools/scripts/Makefile.include
|
||||
+++ b/tools/scripts/Makefile.include
|
||||
@@ -92,3 +92,5 @@ ifneq ($(silent),1)
|
||||
QUIET_INSTALL = @printf ' INSTALL %s\n' $1;
|
||||
endif
|
||||
endif
|
||||
+
|
||||
+pound := \#
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,254 +0,0 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 030f5af05f4e..ee92a12e3a4b 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 146
|
||||
+SUBLEVEL = 147
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
|
||||
index d4d853680ae4..a4abf7dc9576 100644
|
||||
--- a/drivers/i2c/busses/i2c-imx.c
|
||||
+++ b/drivers/i2c/busses/i2c-imx.c
|
||||
@@ -382,6 +382,7 @@ static int i2c_imx_dma_xfer(struct imx_i2c_struct *i2c_imx,
|
||||
goto err_desc;
|
||||
}
|
||||
|
||||
+ reinit_completion(&dma->cmd_complete);
|
||||
txdesc->callback = i2c_imx_dma_callback;
|
||||
txdesc->callback_param = i2c_imx;
|
||||
if (dma_submit_error(dmaengine_submit(txdesc))) {
|
||||
@@ -631,7 +632,6 @@ static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx,
|
||||
* The first byte must be transmitted by the CPU.
|
||||
*/
|
||||
imx_i2c_write_reg(msgs->addr << 1, i2c_imx, IMX_I2C_I2DR);
|
||||
- reinit_completion(&i2c_imx->dma->cmd_complete);
|
||||
time_left = wait_for_completion_timeout(
|
||||
&i2c_imx->dma->cmd_complete,
|
||||
msecs_to_jiffies(DMA_TIMEOUT));
|
||||
@@ -690,7 +690,6 @@ static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx,
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
- reinit_completion(&i2c_imx->dma->cmd_complete);
|
||||
time_left = wait_for_completion_timeout(
|
||||
&i2c_imx->dma->cmd_complete,
|
||||
msecs_to_jiffies(DMA_TIMEOUT));
|
||||
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
|
||||
index a32ba753e413..afaf13474796 100644
|
||||
--- a/drivers/pci/pci-acpi.c
|
||||
+++ b/drivers/pci/pci-acpi.c
|
||||
@@ -543,7 +543,7 @@ void acpi_pci_add_bus(struct pci_bus *bus)
|
||||
union acpi_object *obj;
|
||||
struct pci_host_bridge *bridge;
|
||||
|
||||
- if (acpi_pci_disabled || !bus->bridge)
|
||||
+ if (acpi_pci_disabled || !bus->bridge || !ACPI_HANDLE(bus->bridge))
|
||||
return;
|
||||
|
||||
acpi_pci_slot_enumerate(bus);
|
||||
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
|
||||
index a9eb3cd453be..41a646696bab 100644
|
||||
--- a/drivers/scsi/qla2xxx/qla_init.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_init.c
|
||||
@@ -325,11 +325,10 @@ qla2x00_async_tm_cmd(fc_port_t *fcport, uint32_t flags, uint32_t lun,
|
||||
|
||||
wait_for_completion(&tm_iocb->u.tmf.comp);
|
||||
|
||||
- rval = tm_iocb->u.tmf.comp_status == CS_COMPLETE ?
|
||||
- QLA_SUCCESS : QLA_FUNCTION_FAILED;
|
||||
+ rval = tm_iocb->u.tmf.data;
|
||||
|
||||
- if ((rval != QLA_SUCCESS) || tm_iocb->u.tmf.data) {
|
||||
- ql_dbg(ql_dbg_taskm, vha, 0x8030,
|
||||
+ if (rval != QLA_SUCCESS) {
|
||||
+ ql_log(ql_log_warn, vha, 0x8030,
|
||||
"TM IOCB failed (%x).\n", rval);
|
||||
}
|
||||
|
||||
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
|
||||
index 5cbf20ab94aa..18b19744398a 100644
|
||||
--- a/drivers/scsi/qla2xxx/qla_os.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_os.c
|
||||
@@ -4938,8 +4938,9 @@ qla2x00_do_dpc(void *data)
|
||||
}
|
||||
}
|
||||
|
||||
- if (test_and_clear_bit(ISP_ABORT_NEEDED,
|
||||
- &base_vha->dpc_flags)) {
|
||||
+ if (test_and_clear_bit
|
||||
+ (ISP_ABORT_NEEDED, &base_vha->dpc_flags) &&
|
||||
+ !test_bit(UNLOADING, &base_vha->dpc_flags)) {
|
||||
|
||||
ql_dbg(ql_dbg_dpc, base_vha, 0x4007,
|
||||
"ISP abort scheduled.\n");
|
||||
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
|
||||
index 49af3c50b263..3e4d8ac1974e 100644
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -2102,7 +2102,7 @@ static int ext4_check_descriptors(struct super_block *sb,
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
ext4_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block);
|
||||
ext4_fsblk_t last_block;
|
||||
- ext4_fsblk_t last_bg_block = sb_block + ext4_bg_num_gdb(sb, 0) + 1;
|
||||
+ ext4_fsblk_t last_bg_block = sb_block + ext4_bg_num_gdb(sb, 0);
|
||||
ext4_fsblk_t block_bitmap;
|
||||
ext4_fsblk_t inode_bitmap;
|
||||
ext4_fsblk_t inode_table;
|
||||
@@ -3777,13 +3777,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||
goto failed_mount2;
|
||||
}
|
||||
}
|
||||
+ sbi->s_gdb_count = db_count;
|
||||
if (!ext4_check_descriptors(sb, logical_sb_block, &first_not_zeroed)) {
|
||||
ext4_msg(sb, KERN_ERR, "group descriptors corrupted!");
|
||||
ret = -EFSCORRUPTED;
|
||||
goto failed_mount2;
|
||||
}
|
||||
|
||||
- sbi->s_gdb_count = db_count;
|
||||
get_random_bytes(&sbi->s_next_generation, sizeof(u32));
|
||||
spin_lock_init(&sbi->s_next_gen_lock);
|
||||
|
||||
diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c
|
||||
index 48b15a6e5558..40a26a542341 100644
|
||||
--- a/fs/jfs/xattr.c
|
||||
+++ b/fs/jfs/xattr.c
|
||||
@@ -493,15 +493,17 @@ static int ea_get(struct inode *inode, struct ea_buffer *ea_buf, int min_size)
|
||||
if (size > PSIZE) {
|
||||
/*
|
||||
* To keep the rest of the code simple. Allocate a
|
||||
- * contiguous buffer to work with
|
||||
+ * contiguous buffer to work with. Make the buffer large
|
||||
+ * enough to make use of the whole extent.
|
||||
*/
|
||||
- ea_buf->xattr = kmalloc(size, GFP_KERNEL);
|
||||
+ ea_buf->max_size = (size + sb->s_blocksize - 1) &
|
||||
+ ~(sb->s_blocksize - 1);
|
||||
+
|
||||
+ ea_buf->xattr = kmalloc(ea_buf->max_size, GFP_KERNEL);
|
||||
if (ea_buf->xattr == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
ea_buf->flag = EA_MALLOC;
|
||||
- ea_buf->max_size = (size + sb->s_blocksize - 1) &
|
||||
- ~(sb->s_blocksize - 1);
|
||||
|
||||
if (ea_size == 0)
|
||||
return 0;
|
||||
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
|
||||
index 4acc552e9279..19d0778ec382 100644
|
||||
--- a/include/linux/ring_buffer.h
|
||||
+++ b/include/linux/ring_buffer.h
|
||||
@@ -162,6 +162,7 @@ void ring_buffer_record_enable(struct ring_buffer *buffer);
|
||||
void ring_buffer_record_off(struct ring_buffer *buffer);
|
||||
void ring_buffer_record_on(struct ring_buffer *buffer);
|
||||
int ring_buffer_record_is_on(struct ring_buffer *buffer);
|
||||
+int ring_buffer_record_is_set_on(struct ring_buffer *buffer);
|
||||
void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu);
|
||||
void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu);
|
||||
|
||||
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
|
||||
index 5f55a8bf5264..0df2b44dac7c 100644
|
||||
--- a/kernel/irq/manage.c
|
||||
+++ b/kernel/irq/manage.c
|
||||
@@ -1012,6 +1012,13 @@ static int irq_setup_forced_threading(struct irqaction *new)
|
||||
if (new->flags & (IRQF_NO_THREAD | IRQF_PERCPU | IRQF_ONESHOT))
|
||||
return 0;
|
||||
|
||||
+ /*
|
||||
+ * No further action required for interrupts which are requested as
|
||||
+ * threaded interrupts already
|
||||
+ */
|
||||
+ if (new->handler == irq_default_primary_handler)
|
||||
+ return 0;
|
||||
+
|
||||
new->flags |= IRQF_ONESHOT;
|
||||
|
||||
/*
|
||||
@@ -1019,7 +1026,7 @@ static int irq_setup_forced_threading(struct irqaction *new)
|
||||
* thread handler. We force thread them as well by creating a
|
||||
* secondary action.
|
||||
*/
|
||||
- if (new->handler != irq_default_primary_handler && new->thread_fn) {
|
||||
+ if (new->handler && new->thread_fn) {
|
||||
/* Allocate the secondary action */
|
||||
new->secondary = kzalloc(sizeof(struct irqaction), GFP_KERNEL);
|
||||
if (!new->secondary)
|
||||
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
|
||||
index e5d228f7224c..5ad2e852e9f6 100644
|
||||
--- a/kernel/time/tick-sched.c
|
||||
+++ b/kernel/time/tick-sched.c
|
||||
@@ -570,7 +570,7 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now)
|
||||
|
||||
static inline bool local_timer_softirq_pending(void)
|
||||
{
|
||||
- return local_softirq_pending() & TIMER_SOFTIRQ;
|
||||
+ return local_softirq_pending() & BIT(TIMER_SOFTIRQ);
|
||||
}
|
||||
|
||||
static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
|
||||
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
|
||||
index d9cd6191760b..fdaa88f38aec 100644
|
||||
--- a/kernel/trace/ring_buffer.c
|
||||
+++ b/kernel/trace/ring_buffer.c
|
||||
@@ -3141,6 +3141,22 @@ int ring_buffer_record_is_on(struct ring_buffer *buffer)
|
||||
return !atomic_read(&buffer->record_disabled);
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * ring_buffer_record_is_set_on - return true if the ring buffer is set writable
|
||||
+ * @buffer: The ring buffer to see if write is set enabled
|
||||
+ *
|
||||
+ * Returns true if the ring buffer is set writable by ring_buffer_record_on().
|
||||
+ * Note that this does NOT mean it is in a writable state.
|
||||
+ *
|
||||
+ * It may return true when the ring buffer has been disabled by
|
||||
+ * ring_buffer_record_disable(), as that is a temporary disabling of
|
||||
+ * the ring buffer.
|
||||
+ */
|
||||
+int ring_buffer_record_is_set_on(struct ring_buffer *buffer)
|
||||
+{
|
||||
+ return !(atomic_read(&buffer->record_disabled) & RB_BUFFER_OFF);
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* ring_buffer_record_disable_cpu - stop all writes into the cpu_buffer
|
||||
* @buffer: The ring buffer to stop writes to.
|
||||
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
|
||||
index 8aef4e63ac57..1b980a8ef791 100644
|
||||
--- a/kernel/trace/trace.c
|
||||
+++ b/kernel/trace/trace.c
|
||||
@@ -1088,6 +1088,12 @@ update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
|
||||
|
||||
arch_spin_lock(&tr->max_lock);
|
||||
|
||||
+ /* Inherit the recordable setting from trace_buffer */
|
||||
+ if (ring_buffer_record_is_set_on(tr->trace_buffer.buffer))
|
||||
+ ring_buffer_record_on(tr->max_buffer.buffer);
|
||||
+ else
|
||||
+ ring_buffer_record_off(tr->max_buffer.buffer);
|
||||
+
|
||||
buf = tr->trace_buffer.buffer;
|
||||
tr->trace_buffer.buffer = tr->max_buffer.buffer;
|
||||
tr->max_buffer.buffer = buf;
|
||||
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
|
||||
index 9708fff318d5..bf292010760a 100644
|
||||
--- a/net/netlink/af_netlink.c
|
||||
+++ b/net/netlink/af_netlink.c
|
||||
@@ -986,6 +986,11 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
|
||||
return err;
|
||||
}
|
||||
|
||||
+ if (nlk->ngroups == 0)
|
||||
+ groups = 0;
|
||||
+ else if (nlk->ngroups < 8*sizeof(groups))
|
||||
+ groups &= (1UL << nlk->ngroups) - 1;
|
||||
+
|
||||
bound = nlk->bound;
|
||||
if (bound) {
|
||||
/* Ensure nlk->portid is up-to-date. */
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,36 +0,0 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index e7c46ece5f27..7789195c6a59 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 149
|
||||
+SUBLEVEL = 150
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable-invert.h b/arch/x86/include/asm/pgtable-invert.h
|
||||
index 44b1203ece12..a0c1525f1b6f 100644
|
||||
--- a/arch/x86/include/asm/pgtable-invert.h
|
||||
+++ b/arch/x86/include/asm/pgtable-invert.h
|
||||
@@ -4,9 +4,18 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
+/*
|
||||
+ * A clear pte value is special, and doesn't get inverted.
|
||||
+ *
|
||||
+ * Note that even users that only pass a pgprot_t (rather
|
||||
+ * than a full pte) won't trigger the special zero case,
|
||||
+ * because even PAGE_NONE has _PAGE_PROTNONE | _PAGE_ACCESSED
|
||||
+ * set. So the all zero case really is limited to just the
|
||||
+ * cleared page table entry case.
|
||||
+ */
|
||||
static inline bool __pte_needs_invert(u64 val)
|
||||
{
|
||||
- return !(val & _PAGE_PRESENT);
|
||||
+ return val && !(val & _PAGE_PRESENT);
|
||||
}
|
||||
|
||||
/* Get a mask to xor with the page table entry to get the correct pfn. */
|
|
@ -1,596 +0,0 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 7789195c6a59..04199cf99dd5 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 150
|
||||
+SUBLEVEL = 151
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
|
||||
index 4de6c282c02a..68a55273ce0f 100644
|
||||
--- a/arch/x86/include/asm/pgtable.h
|
||||
+++ b/arch/x86/include/asm/pgtable.h
|
||||
@@ -173,6 +173,11 @@ static inline unsigned long pud_pfn(pud_t pud)
|
||||
return (pfn & pud_pfn_mask(pud)) >> PAGE_SHIFT;
|
||||
}
|
||||
|
||||
+static inline unsigned long pgd_pfn(pgd_t pgd)
|
||||
+{
|
||||
+ return (pgd_val(pgd) & PTE_PFN_MASK) >> PAGE_SHIFT;
|
||||
+}
|
||||
+
|
||||
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
||||
|
||||
static inline int pmd_large(pmd_t pte)
|
||||
@@ -578,8 +583,7 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
|
||||
* Currently stuck as a macro due to indirect forward reference to
|
||||
* linux/mmzone.h's __section_mem_map_addr() definition:
|
||||
*/
|
||||
-#define pmd_page(pmd) \
|
||||
- pfn_to_page((pmd_val(pmd) & pmd_pfn_mask(pmd)) >> PAGE_SHIFT)
|
||||
+#define pmd_page(pmd) pfn_to_page(pmd_pfn(pmd))
|
||||
|
||||
/*
|
||||
* the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
|
||||
@@ -647,8 +651,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
|
||||
* Currently stuck as a macro due to indirect forward reference to
|
||||
* linux/mmzone.h's __section_mem_map_addr() definition:
|
||||
*/
|
||||
-#define pud_page(pud) \
|
||||
- pfn_to_page((pud_val(pud) & pud_pfn_mask(pud)) >> PAGE_SHIFT)
|
||||
+#define pud_page(pud) pfn_to_page(pud_pfn(pud))
|
||||
|
||||
/* Find an entry in the second-level page table.. */
|
||||
static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
|
||||
@@ -688,7 +691,7 @@ static inline unsigned long pgd_page_vaddr(pgd_t pgd)
|
||||
* Currently stuck as a macro due to indirect forward reference to
|
||||
* linux/mmzone.h's __section_mem_map_addr() definition:
|
||||
*/
|
||||
-#define pgd_page(pgd) pfn_to_page(pgd_val(pgd) >> PAGE_SHIFT)
|
||||
+#define pgd_page(pgd) pfn_to_page(pgd_pfn(pgd))
|
||||
|
||||
/* to find an entry in a page-table-directory. */
|
||||
static inline unsigned long pud_index(unsigned long address)
|
||||
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
|
||||
index e3322adaaae0..4f07029de209 100644
|
||||
--- a/drivers/acpi/sleep.c
|
||||
+++ b/drivers/acpi/sleep.c
|
||||
@@ -124,6 +124,12 @@ void __init acpi_nvs_nosave_s3(void)
|
||||
nvs_nosave_s3 = true;
|
||||
}
|
||||
|
||||
+static int __init init_nvs_save_s3(const struct dmi_system_id *d)
|
||||
+{
|
||||
+ nvs_nosave_s3 = false;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* ACPI 1.0 wants us to execute _PTS before suspending devices, so we allow the
|
||||
* user to request that behavior by using the 'acpi_old_suspend_ordering'
|
||||
@@ -318,6 +324,27 @@ static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"),
|
||||
},
|
||||
},
|
||||
+ {
|
||||
+ .callback = init_nvs_save_s3,
|
||||
+ .ident = "Asus 1025C",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "1025C"),
|
||||
+ },
|
||||
+ },
|
||||
+ /*
|
||||
+ * https://bugzilla.kernel.org/show_bug.cgi?id=189431
|
||||
+ * Lenovo G50-45 is a platform later than 2012, but needs nvs memory
|
||||
+ * saving during S3.
|
||||
+ */
|
||||
+ {
|
||||
+ .callback = init_nvs_save_s3,
|
||||
+ .ident = "Lenovo G50-45",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "80E3"),
|
||||
+ },
|
||||
+ },
|
||||
{},
|
||||
};
|
||||
|
||||
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
|
||||
index e4c43a17b333..8088c34336aa 100644
|
||||
--- a/drivers/isdn/i4l/isdn_common.c
|
||||
+++ b/drivers/isdn/i4l/isdn_common.c
|
||||
@@ -1655,13 +1655,7 @@ isdn_ioctl(struct file *file, uint cmd, ulong arg)
|
||||
} else
|
||||
return -EINVAL;
|
||||
case IIOCDBGVAR:
|
||||
- if (arg) {
|
||||
- if (copy_to_user(argp, &dev, sizeof(ulong)))
|
||||
- return -EFAULT;
|
||||
- return 0;
|
||||
- } else
|
||||
- return -EINVAL;
|
||||
- break;
|
||||
+ return -EINVAL;
|
||||
default:
|
||||
if ((cmd & IIOCDRVCTL) == IIOCDRVCTL)
|
||||
cmd = ((cmd >> _IOC_NRSHIFT) & _IOC_NRMASK) & ISDN_DRVIOCTL_MASK;
|
||||
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
|
||||
index 8435c3f204c1..a30d68c4b689 100644
|
||||
--- a/drivers/tty/serial/8250/8250_dw.c
|
||||
+++ b/drivers/tty/serial/8250/8250_dw.c
|
||||
@@ -224,7 +224,7 @@ static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios,
|
||||
unsigned int rate;
|
||||
int ret;
|
||||
|
||||
- if (IS_ERR(d->clk) || !old)
|
||||
+ if (IS_ERR(d->clk))
|
||||
goto out;
|
||||
|
||||
clk_disable_unprepare(d->clk);
|
||||
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
|
||||
index d982c455e18e..2b81939fecd7 100644
|
||||
--- a/drivers/usb/serial/option.c
|
||||
+++ b/drivers/usb/serial/option.c
|
||||
@@ -199,6 +199,8 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define DELL_PRODUCT_5800_V2_MINICARD_VZW 0x8196 /* Novatel E362 */
|
||||
#define DELL_PRODUCT_5804_MINICARD_ATT 0x819b /* Novatel E371 */
|
||||
|
||||
+#define DELL_PRODUCT_5821E 0x81d7
|
||||
+
|
||||
#define KYOCERA_VENDOR_ID 0x0c88
|
||||
#define KYOCERA_PRODUCT_KPC650 0x17da
|
||||
#define KYOCERA_PRODUCT_KPC680 0x180a
|
||||
@@ -1033,6 +1035,8 @@ static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_MINICARD_VZW, 0xff, 0xff, 0xff) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_V2_MINICARD_VZW, 0xff, 0xff, 0xff) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5804_MINICARD_ATT, 0xff, 0xff, 0xff) },
|
||||
+ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5821E),
|
||||
+ .driver_info = RSVD(0) | RSVD(1) | RSVD(6) },
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
|
||||
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
|
||||
index 07d1ecd564f7..8960a46c83bb 100644
|
||||
--- a/drivers/usb/serial/sierra.c
|
||||
+++ b/drivers/usb/serial/sierra.c
|
||||
@@ -790,9 +790,9 @@ static void sierra_close(struct usb_serial_port *port)
|
||||
kfree(urb->transfer_buffer);
|
||||
usb_free_urb(urb);
|
||||
usb_autopm_put_interface_async(serial->interface);
|
||||
- spin_lock(&portdata->lock);
|
||||
+ spin_lock_irq(&portdata->lock);
|
||||
portdata->outstanding_urbs--;
|
||||
- spin_unlock(&portdata->lock);
|
||||
+ spin_unlock_irq(&portdata->lock);
|
||||
}
|
||||
|
||||
sierra_stop_rx_urbs(port);
|
||||
diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h
|
||||
index e9eb2d6791b3..f7a35fcaaaf6 100644
|
||||
--- a/include/net/af_vsock.h
|
||||
+++ b/include/net/af_vsock.h
|
||||
@@ -62,7 +62,8 @@ struct vsock_sock {
|
||||
struct list_head pending_links;
|
||||
struct list_head accept_queue;
|
||||
bool rejected;
|
||||
- struct delayed_work dwork;
|
||||
+ struct delayed_work connect_work;
|
||||
+ struct delayed_work pending_work;
|
||||
u32 peer_shutdown;
|
||||
bool sent_request;
|
||||
bool ignore_connecting_rst;
|
||||
@@ -73,7 +74,6 @@ struct vsock_sock {
|
||||
|
||||
s64 vsock_stream_has_data(struct vsock_sock *vsk);
|
||||
s64 vsock_stream_has_space(struct vsock_sock *vsk);
|
||||
-void vsock_pending_work(struct work_struct *work);
|
||||
struct sock *__vsock_create(struct net *net,
|
||||
struct socket *sock,
|
||||
struct sock *parent,
|
||||
diff --git a/include/net/llc.h b/include/net/llc.h
|
||||
index e8e61d4fb458..82d989995d18 100644
|
||||
--- a/include/net/llc.h
|
||||
+++ b/include/net/llc.h
|
||||
@@ -116,6 +116,11 @@ static inline void llc_sap_hold(struct llc_sap *sap)
|
||||
atomic_inc(&sap->refcnt);
|
||||
}
|
||||
|
||||
+static inline bool llc_sap_hold_safe(struct llc_sap *sap)
|
||||
+{
|
||||
+ return atomic_inc_not_zero(&sap->refcnt);
|
||||
+}
|
||||
+
|
||||
void llc_sap_close(struct llc_sap *sap);
|
||||
|
||||
static inline void llc_sap_put(struct llc_sap *sap)
|
||||
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
|
||||
index f52bcbf2e58c..2209fd2ff2e3 100644
|
||||
--- a/net/bluetooth/sco.c
|
||||
+++ b/net/bluetooth/sco.c
|
||||
@@ -392,7 +392,8 @@ static void sco_sock_cleanup_listen(struct sock *parent)
|
||||
*/
|
||||
static void sco_sock_kill(struct sock *sk)
|
||||
{
|
||||
- if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
|
||||
+ if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket ||
|
||||
+ sock_flag(sk, SOCK_DEAD))
|
||||
return;
|
||||
|
||||
BT_DBG("sk %p state %d", sk, sk->sk_state);
|
||||
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c
|
||||
index 86a2ed0fb219..161dfcf86126 100644
|
||||
--- a/net/dccp/ccids/ccid2.c
|
||||
+++ b/net/dccp/ccids/ccid2.c
|
||||
@@ -228,14 +228,16 @@ static void ccid2_cwnd_restart(struct sock *sk, const u32 now)
|
||||
struct ccid2_hc_tx_sock *hc = ccid2_hc_tx_sk(sk);
|
||||
u32 cwnd = hc->tx_cwnd, restart_cwnd,
|
||||
iwnd = rfc3390_bytes_to_packets(dccp_sk(sk)->dccps_mss_cache);
|
||||
+ s32 delta = now - hc->tx_lsndtime;
|
||||
|
||||
hc->tx_ssthresh = max(hc->tx_ssthresh, (cwnd >> 1) + (cwnd >> 2));
|
||||
|
||||
/* don't reduce cwnd below the initial window (IW) */
|
||||
restart_cwnd = min(cwnd, iwnd);
|
||||
- cwnd >>= (now - hc->tx_lsndtime) / hc->tx_rto;
|
||||
- hc->tx_cwnd = max(cwnd, restart_cwnd);
|
||||
|
||||
+ while ((delta -= hc->tx_rto) >= 0 && cwnd > restart_cwnd)
|
||||
+ cwnd >>= 1;
|
||||
+ hc->tx_cwnd = max(cwnd, restart_cwnd);
|
||||
hc->tx_cwnd_stamp = now;
|
||||
hc->tx_cwnd_used = 0;
|
||||
|
||||
diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c
|
||||
index 92df832a1896..591d18785285 100644
|
||||
--- a/net/l2tp/l2tp_core.c
|
||||
+++ b/net/l2tp/l2tp_core.c
|
||||
@@ -1145,7 +1145,7 @@ int l2tp_xmit_skb(struct l2tp_session *session, struct sk_buff *skb, int hdr_len
|
||||
|
||||
/* Get routing info from the tunnel socket */
|
||||
skb_dst_drop(skb);
|
||||
- skb_dst_set(skb, dst_clone(__sk_dst_check(sk, 0)));
|
||||
+ skb_dst_set(skb, sk_dst_check(sk, 0));
|
||||
|
||||
inet = inet_sk(sk);
|
||||
fl = &inet->cork.fl;
|
||||
diff --git a/net/llc/llc_core.c b/net/llc/llc_core.c
|
||||
index 842851cef698..e896a2c53b12 100644
|
||||
--- a/net/llc/llc_core.c
|
||||
+++ b/net/llc/llc_core.c
|
||||
@@ -73,8 +73,8 @@ struct llc_sap *llc_sap_find(unsigned char sap_value)
|
||||
|
||||
rcu_read_lock_bh();
|
||||
sap = __llc_sap_find(sap_value);
|
||||
- if (sap)
|
||||
- llc_sap_hold(sap);
|
||||
+ if (!sap || !llc_sap_hold_safe(sap))
|
||||
+ sap = NULL;
|
||||
rcu_read_unlock_bh();
|
||||
return sap;
|
||||
}
|
||||
diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c
|
||||
index 403746b20263..040d853f48b9 100644
|
||||
--- a/net/sched/cls_tcindex.c
|
||||
+++ b/net/sched/cls_tcindex.c
|
||||
@@ -382,22 +382,20 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
|
||||
tcf_bind_filter(tp, &cr.res, base);
|
||||
}
|
||||
|
||||
- if (old_r)
|
||||
- tcf_exts_change(tp, &r->exts, &e);
|
||||
- else
|
||||
- tcf_exts_change(tp, &cr.exts, &e);
|
||||
-
|
||||
if (old_r && old_r != r)
|
||||
tcindex_filter_result_init(old_r);
|
||||
|
||||
oldp = p;
|
||||
r->res = cr.res;
|
||||
+ tcf_exts_change(tp, &r->exts, &e);
|
||||
+
|
||||
rcu_assign_pointer(tp->root, cp);
|
||||
|
||||
if (r == &new_filter_result) {
|
||||
struct tcindex_filter *nfp;
|
||||
struct tcindex_filter __rcu **fp;
|
||||
|
||||
+ f->result.res = r->res;
|
||||
tcf_exts_change(tp, &f->result.exts, &r->exts);
|
||||
|
||||
fp = cp->h + (handle % cp->hash);
|
||||
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
|
||||
index 60324f7c72bd..7f1d166ce612 100644
|
||||
--- a/net/vmw_vsock/af_vsock.c
|
||||
+++ b/net/vmw_vsock/af_vsock.c
|
||||
@@ -430,14 +430,14 @@ static int vsock_send_shutdown(struct sock *sk, int mode)
|
||||
return transport->shutdown(vsock_sk(sk), mode);
|
||||
}
|
||||
|
||||
-void vsock_pending_work(struct work_struct *work)
|
||||
+static void vsock_pending_work(struct work_struct *work)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct sock *listener;
|
||||
struct vsock_sock *vsk;
|
||||
bool cleanup;
|
||||
|
||||
- vsk = container_of(work, struct vsock_sock, dwork.work);
|
||||
+ vsk = container_of(work, struct vsock_sock, pending_work.work);
|
||||
sk = sk_vsock(vsk);
|
||||
listener = vsk->listener;
|
||||
cleanup = true;
|
||||
@@ -477,7 +477,6 @@ out:
|
||||
sock_put(sk);
|
||||
sock_put(listener);
|
||||
}
|
||||
-EXPORT_SYMBOL_GPL(vsock_pending_work);
|
||||
|
||||
/**** SOCKET OPERATIONS ****/
|
||||
|
||||
@@ -576,6 +575,8 @@ static int __vsock_bind(struct sock *sk, struct sockaddr_vm *addr)
|
||||
return retval;
|
||||
}
|
||||
|
||||
+static void vsock_connect_timeout(struct work_struct *work);
|
||||
+
|
||||
struct sock *__vsock_create(struct net *net,
|
||||
struct socket *sock,
|
||||
struct sock *parent,
|
||||
@@ -618,6 +619,8 @@ struct sock *__vsock_create(struct net *net,
|
||||
vsk->sent_request = false;
|
||||
vsk->ignore_connecting_rst = false;
|
||||
vsk->peer_shutdown = 0;
|
||||
+ INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout);
|
||||
+ INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work);
|
||||
|
||||
psk = parent ? vsock_sk(parent) : NULL;
|
||||
if (parent) {
|
||||
@@ -1094,7 +1097,7 @@ static void vsock_connect_timeout(struct work_struct *work)
|
||||
struct sock *sk;
|
||||
struct vsock_sock *vsk;
|
||||
|
||||
- vsk = container_of(work, struct vsock_sock, dwork.work);
|
||||
+ vsk = container_of(work, struct vsock_sock, connect_work.work);
|
||||
sk = sk_vsock(vsk);
|
||||
|
||||
lock_sock(sk);
|
||||
@@ -1195,9 +1198,7 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr,
|
||||
* timeout fires.
|
||||
*/
|
||||
sock_hold(sk);
|
||||
- INIT_DELAYED_WORK(&vsk->dwork,
|
||||
- vsock_connect_timeout);
|
||||
- schedule_delayed_work(&vsk->dwork, timeout);
|
||||
+ schedule_delayed_work(&vsk->connect_work, timeout);
|
||||
|
||||
/* Skip ahead to preserve error code set above. */
|
||||
goto out_wait;
|
||||
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
|
||||
index 662bdd20a748..589c8b9908a5 100644
|
||||
--- a/net/vmw_vsock/vmci_transport.c
|
||||
+++ b/net/vmw_vsock/vmci_transport.c
|
||||
@@ -1099,8 +1099,7 @@ static int vmci_transport_recv_listen(struct sock *sk,
|
||||
vpending->listener = sk;
|
||||
sock_hold(sk);
|
||||
sock_hold(pending);
|
||||
- INIT_DELAYED_WORK(&vpending->dwork, vsock_pending_work);
|
||||
- schedule_delayed_work(&vpending->dwork, HZ);
|
||||
+ schedule_delayed_work(&vpending->pending_work, HZ);
|
||||
|
||||
out:
|
||||
return err;
|
||||
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
|
||||
index f05cb6a8cbe0..78ffe445d775 100644
|
||||
--- a/sound/core/memalloc.c
|
||||
+++ b/sound/core/memalloc.c
|
||||
@@ -239,16 +239,12 @@ int snd_dma_alloc_pages_fallback(int type, struct device *device, size_t size,
|
||||
int err;
|
||||
|
||||
while ((err = snd_dma_alloc_pages(type, device, size, dmab)) < 0) {
|
||||
- size_t aligned_size;
|
||||
if (err != -ENOMEM)
|
||||
return err;
|
||||
if (size <= PAGE_SIZE)
|
||||
return -ENOMEM;
|
||||
- aligned_size = PAGE_SIZE << get_order(size);
|
||||
- if (size != aligned_size)
|
||||
- size = aligned_size;
|
||||
- else
|
||||
- size >>= 1;
|
||||
+ size >>= 1;
|
||||
+ size = PAGE_SIZE << get_order(size);
|
||||
}
|
||||
if (! dmab->area)
|
||||
return -ENOMEM;
|
||||
diff --git a/sound/core/seq/seq_virmidi.c b/sound/core/seq/seq_virmidi.c
|
||||
index ef494ffc1369..975a7c939d2f 100644
|
||||
--- a/sound/core/seq/seq_virmidi.c
|
||||
+++ b/sound/core/seq/seq_virmidi.c
|
||||
@@ -163,6 +163,7 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
|
||||
int count, res;
|
||||
unsigned char buf[32], *pbuf;
|
||||
unsigned long flags;
|
||||
+ bool check_resched = !in_atomic();
|
||||
|
||||
if (up) {
|
||||
vmidi->trigger = 1;
|
||||
@@ -200,6 +201,15 @@ static void snd_virmidi_output_trigger(struct snd_rawmidi_substream *substream,
|
||||
vmidi->event.type = SNDRV_SEQ_EVENT_NONE;
|
||||
}
|
||||
}
|
||||
+ if (!check_resched)
|
||||
+ continue;
|
||||
+ /* do temporary unlock & cond_resched() for avoiding
|
||||
+ * CPU soft lockup, which may happen via a write from
|
||||
+ * a huge rawmidi buffer
|
||||
+ */
|
||||
+ spin_unlock_irqrestore(&substream->runtime->lock, flags);
|
||||
+ cond_resched();
|
||||
+ spin_lock_irqsave(&substream->runtime->lock, flags);
|
||||
}
|
||||
out:
|
||||
spin_unlock_irqrestore(&substream->runtime->lock, flags);
|
||||
diff --git a/sound/pci/cs5535audio/cs5535audio.h b/sound/pci/cs5535audio/cs5535audio.h
|
||||
index 0579daa62215..425d1b664029 100644
|
||||
--- a/sound/pci/cs5535audio/cs5535audio.h
|
||||
+++ b/sound/pci/cs5535audio/cs5535audio.h
|
||||
@@ -66,9 +66,9 @@ struct cs5535audio_dma_ops {
|
||||
};
|
||||
|
||||
struct cs5535audio_dma_desc {
|
||||
- u32 addr;
|
||||
- u16 size;
|
||||
- u16 ctlreserved;
|
||||
+ __le32 addr;
|
||||
+ __le16 size;
|
||||
+ __le16 ctlreserved;
|
||||
};
|
||||
|
||||
struct cs5535audio_dma {
|
||||
diff --git a/sound/pci/cs5535audio/cs5535audio_pcm.c b/sound/pci/cs5535audio/cs5535audio_pcm.c
|
||||
index 9c2dc911d8d7..709f1c584d3e 100644
|
||||
--- a/sound/pci/cs5535audio/cs5535audio_pcm.c
|
||||
+++ b/sound/pci/cs5535audio/cs5535audio_pcm.c
|
||||
@@ -158,8 +158,8 @@ static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au,
|
||||
lastdesc->addr = cpu_to_le32((u32) dma->desc_buf.addr);
|
||||
lastdesc->size = 0;
|
||||
lastdesc->ctlreserved = cpu_to_le16(PRD_JMP);
|
||||
- jmpprd_addr = cpu_to_le32(lastdesc->addr +
|
||||
- (sizeof(struct cs5535audio_dma_desc)*periods));
|
||||
+ jmpprd_addr = (u32)dma->desc_buf.addr +
|
||||
+ sizeof(struct cs5535audio_dma_desc) * periods;
|
||||
|
||||
dma->substream = substream;
|
||||
dma->period_bytes = period_bytes;
|
||||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
|
||||
index d0b55c866370..cabccb10210e 100644
|
||||
--- a/sound/pci/hda/hda_intel.c
|
||||
+++ b/sound/pci/hda/hda_intel.c
|
||||
@@ -2069,7 +2069,7 @@ out_free:
|
||||
*/
|
||||
static struct snd_pci_quirk power_save_blacklist[] = {
|
||||
/* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */
|
||||
- SND_PCI_QUIRK(0x1849, 0x0c0c, "Asrock B85M-ITX", 0),
|
||||
+ SND_PCI_QUIRK(0x1849, 0xc892, "Asrock B85M-ITX", 0),
|
||||
/* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */
|
||||
SND_PCI_QUIRK(0x1043, 0x8733, "Asus Prime X370-Pro", 0),
|
||||
/* https://bugzilla.redhat.com/show_bug.cgi?id=1572975 */
|
||||
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
|
||||
index cb19af145f46..a1a3ce8c3f56 100644
|
||||
--- a/sound/pci/hda/patch_conexant.c
|
||||
+++ b/sound/pci/hda/patch_conexant.c
|
||||
@@ -205,6 +205,7 @@ static void cx_auto_reboot_notify(struct hda_codec *codec)
|
||||
struct conexant_spec *spec = codec->spec;
|
||||
|
||||
switch (codec->core.vendor_id) {
|
||||
+ case 0x14f12008: /* CX8200 */
|
||||
case 0x14f150f2: /* CX20722 */
|
||||
case 0x14f150f4: /* CX20724 */
|
||||
break;
|
||||
@@ -212,13 +213,14 @@ static void cx_auto_reboot_notify(struct hda_codec *codec)
|
||||
return;
|
||||
}
|
||||
|
||||
- /* Turn the CX20722 codec into D3 to avoid spurious noises
|
||||
+ /* Turn the problematic codec into D3 to avoid spurious noises
|
||||
from the internal speaker during (and after) reboot */
|
||||
cx_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, false);
|
||||
|
||||
snd_hda_codec_set_power_to_all(codec, codec->core.afg, AC_PWRST_D3);
|
||||
snd_hda_codec_write(codec, codec->core.afg, 0,
|
||||
AC_VERB_SET_POWER_STATE, AC_PWRST_D3);
|
||||
+ msleep(10);
|
||||
}
|
||||
|
||||
static void cx_auto_free(struct hda_codec *codec)
|
||||
diff --git a/sound/pci/vx222/vx222_ops.c b/sound/pci/vx222/vx222_ops.c
|
||||
index 8e457ea27f89..1997bb048d8b 100644
|
||||
--- a/sound/pci/vx222/vx222_ops.c
|
||||
+++ b/sound/pci/vx222/vx222_ops.c
|
||||
@@ -275,7 +275,7 @@ static void vx2_dma_write(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
length >>= 2; /* in 32bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; length > 0; length--) {
|
||||
- outl(cpu_to_le32(*addr), port);
|
||||
+ outl(*addr, port);
|
||||
addr++;
|
||||
}
|
||||
addr = (u32 *)runtime->dma_area;
|
||||
@@ -285,7 +285,7 @@ static void vx2_dma_write(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
count >>= 2; /* in 32bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; count > 0; count--) {
|
||||
- outl(cpu_to_le32(*addr), port);
|
||||
+ outl(*addr, port);
|
||||
addr++;
|
||||
}
|
||||
|
||||
@@ -313,7 +313,7 @@ static void vx2_dma_read(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
length >>= 2; /* in 32bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; length > 0; length--)
|
||||
- *addr++ = le32_to_cpu(inl(port));
|
||||
+ *addr++ = inl(port);
|
||||
addr = (u32 *)runtime->dma_area;
|
||||
pipe->hw_ptr = 0;
|
||||
}
|
||||
@@ -321,7 +321,7 @@ static void vx2_dma_read(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
count >>= 2; /* in 32bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; count > 0; count--)
|
||||
- *addr++ = le32_to_cpu(inl(port));
|
||||
+ *addr++ = inl(port);
|
||||
|
||||
vx2_release_pseudo_dma(chip);
|
||||
}
|
||||
diff --git a/sound/pcmcia/vx/vxp_ops.c b/sound/pcmcia/vx/vxp_ops.c
|
||||
index 56aa1ba73ccc..49a883341eff 100644
|
||||
--- a/sound/pcmcia/vx/vxp_ops.c
|
||||
+++ b/sound/pcmcia/vx/vxp_ops.c
|
||||
@@ -375,7 +375,7 @@ static void vxp_dma_write(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
length >>= 1; /* in 16bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; length > 0; length--) {
|
||||
- outw(cpu_to_le16(*addr), port);
|
||||
+ outw(*addr, port);
|
||||
addr++;
|
||||
}
|
||||
addr = (unsigned short *)runtime->dma_area;
|
||||
@@ -385,7 +385,7 @@ static void vxp_dma_write(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
count >>= 1; /* in 16bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; count > 0; count--) {
|
||||
- outw(cpu_to_le16(*addr), port);
|
||||
+ outw(*addr, port);
|
||||
addr++;
|
||||
}
|
||||
vx_release_pseudo_dma(chip);
|
||||
@@ -417,7 +417,7 @@ static void vxp_dma_read(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
length >>= 1; /* in 16bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; length > 0; length--)
|
||||
- *addr++ = le16_to_cpu(inw(port));
|
||||
+ *addr++ = inw(port);
|
||||
addr = (unsigned short *)runtime->dma_area;
|
||||
pipe->hw_ptr = 0;
|
||||
}
|
||||
@@ -425,12 +425,12 @@ static void vxp_dma_read(struct vx_core *chip, struct snd_pcm_runtime *runtime,
|
||||
count >>= 1; /* in 16bit words */
|
||||
/* Transfer using pseudo-dma. */
|
||||
for (; count > 1; count--)
|
||||
- *addr++ = le16_to_cpu(inw(port));
|
||||
+ *addr++ = inw(port);
|
||||
/* Disable DMA */
|
||||
pchip->regDIALOG &= ~VXP_DLG_DMAREAD_SEL_MASK;
|
||||
vx_outb(chip, DIALOG, pchip->regDIALOG);
|
||||
/* Read the last word (16 bits) */
|
||||
- *addr = le16_to_cpu(inw(port));
|
||||
+ *addr = inw(port);
|
||||
/* Disable 16-bit accesses */
|
||||
pchip->regDIALOG &= ~VXP_DLG_DMA16_SEL_MASK;
|
||||
vx_outb(chip, DIALOG, pchip->regDIALOG);
|
File diff suppressed because it is too large
Load diff
|
@ -1,134 +0,0 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 523b0d4354fb..208a813be615 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 152
|
||||
+SUBLEVEL = 153
|
||||
EXTRAVERSION =
|
||||
NAME = Blurry Fish Butt
|
||||
|
||||
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
|
||||
index effc12767cbf..d8d19fe99e45 100644
|
||||
--- a/arch/x86/include/asm/mmu_context.h
|
||||
+++ b/arch/x86/include/asm/mmu_context.h
|
||||
@@ -109,8 +109,7 @@ static inline int init_new_context(struct task_struct *tsk,
|
||||
struct mm_struct *mm)
|
||||
{
|
||||
mm->context.ctx_id = atomic64_inc_return(&last_mm_ctx_id);
|
||||
- init_new_context_ldt(tsk, mm);
|
||||
- return 0;
|
||||
+ return init_new_context_ldt(tsk, mm);
|
||||
}
|
||||
static inline void destroy_context(struct mm_struct *mm)
|
||||
{
|
||||
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
|
||||
index 27610c2d1821..1007fa80f5a6 100644
|
||||
--- a/arch/x86/mm/pageattr.c
|
||||
+++ b/arch/x86/mm/pageattr.c
|
||||
@@ -1006,7 +1006,7 @@ static int populate_pmd(struct cpa_data *cpa,
|
||||
|
||||
pmd = pmd_offset(pud, start);
|
||||
|
||||
- set_pmd(pmd, pmd_mkhuge(pfn_pmd(cpa->pfn,
|
||||
+ set_pmd(pmd, pmd_mkhuge(pfn_pmd(cpa->pfn >> PAGE_SHIFT,
|
||||
canon_pgprot(pmd_pgprot))));
|
||||
|
||||
start += PMD_SIZE;
|
||||
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
|
||||
index c319d5eaabcf..28316b292b8a 100644
|
||||
--- a/fs/overlayfs/overlayfs.h
|
||||
+++ b/fs/overlayfs/overlayfs.h
|
||||
@@ -163,6 +163,7 @@ extern const struct file_operations ovl_dir_operations;
|
||||
int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list);
|
||||
void ovl_cleanup_whiteouts(struct dentry *upper, struct list_head *list);
|
||||
void ovl_cache_free(struct list_head *list);
|
||||
+int ovl_check_d_type_supported(struct path *realpath);
|
||||
|
||||
/* inode.c */
|
||||
int ovl_setattr(struct dentry *dentry, struct iattr *attr);
|
||||
diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c
|
||||
index 299a6e1d6b77..0c59955c4653 100644
|
||||
--- a/fs/overlayfs/readdir.c
|
||||
+++ b/fs/overlayfs/readdir.c
|
||||
@@ -43,6 +43,7 @@ struct ovl_readdir_data {
|
||||
struct ovl_cache_entry *first_maybe_whiteout;
|
||||
int count;
|
||||
int err;
|
||||
+ bool d_type_supported;
|
||||
};
|
||||
|
||||
struct ovl_dir_file {
|
||||
@@ -581,3 +582,39 @@ void ovl_cleanup_whiteouts(struct dentry *upper, struct list_head *list)
|
||||
}
|
||||
mutex_unlock(&upper->d_inode->i_mutex);
|
||||
}
|
||||
+
|
||||
+static int ovl_check_d_type(struct dir_context *ctx, const char *name,
|
||||
+ int namelen, loff_t offset, u64 ino,
|
||||
+ unsigned int d_type)
|
||||
+{
|
||||
+ struct ovl_readdir_data *rdd =
|
||||
+ container_of(ctx, struct ovl_readdir_data, ctx);
|
||||
+
|
||||
+ /* Even if d_type is not supported, DT_DIR is returned for . and .. */
|
||||
+ if (!strncmp(name, ".", namelen) || !strncmp(name, "..", namelen))
|
||||
+ return 0;
|
||||
+
|
||||
+ if (d_type != DT_UNKNOWN)
|
||||
+ rdd->d_type_supported = true;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Returns 1 if d_type is supported, 0 not supported/unknown. Negative values
|
||||
+ * if error is encountered.
|
||||
+ */
|
||||
+int ovl_check_d_type_supported(struct path *realpath)
|
||||
+{
|
||||
+ int err;
|
||||
+ struct ovl_readdir_data rdd = {
|
||||
+ .ctx.actor = ovl_check_d_type,
|
||||
+ .d_type_supported = false,
|
||||
+ };
|
||||
+
|
||||
+ err = ovl_dir_read(realpath, &rdd);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ return rdd.d_type_supported;
|
||||
+}
|
||||
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
|
||||
index d70208c0de84..0035cb80ecd1 100644
|
||||
--- a/fs/overlayfs/super.c
|
||||
+++ b/fs/overlayfs/super.c
|
||||
@@ -1054,6 +1054,26 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
||||
sb->s_flags |= MS_RDONLY;
|
||||
ufs->workdir = NULL;
|
||||
}
|
||||
+
|
||||
+ /*
|
||||
+ * Upper should support d_type, else whiteouts are visible.
|
||||
+ * Given workdir and upper are on same fs, we can do
|
||||
+ * iterate_dir() on workdir. This check requires successful
|
||||
+ * creation of workdir in previous step.
|
||||
+ */
|
||||
+ if (ufs->workdir) {
|
||||
+ err = ovl_check_d_type_supported(&workpath);
|
||||
+ if (err < 0)
|
||||
+ goto out_put_workdir;
|
||||
+
|
||||
+ /*
|
||||
+ * We allowed this configuration and don't want to
|
||||
+ * break users over kernel upgrade. So warn instead
|
||||
+ * of erroring out.
|
||||
+ */
|
||||
+ if (!err)
|
||||
+ pr_warn("overlayfs: upper fs needs to support d_type.\n");
|
||||
+ }
|
||||
}
|
||||
|
||||
err = -ENOMEM;
|
File diff suppressed because it is too large
Load diff
3101
patch/kernel/rockchip64-default/04-patch-4.4.159-160.patch
Normal file
3101
patch/kernel/rockchip64-default/04-patch-4.4.159-160.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,46 +0,0 @@
|
|||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
index 9f11025a..151665c8 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
@@ -2067,17 +2067,17 @@
|
||||
sdmmc0 {
|
||||
sdmmc0_clk: sdmmc0-clk {
|
||||
rockchip,pins =
|
||||
- <1 RK_PA6 RK_FUNC_1 &pcfg_pull_none_4ma>;
|
||||
+ <1 RK_PA6 RK_FUNC_1 &pcfg_pull_none_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_cmd: sdmmc0-cmd {
|
||||
rockchip,pins =
|
||||
- <1 RK_PA4 RK_FUNC_1 &pcfg_pull_up_4ma>;
|
||||
+ <1 RK_PA4 RK_FUNC_1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_dectn: sdmmc0-dectn {
|
||||
rockchip,pins =
|
||||
- <1 RK_PA5 RK_FUNC_1 &pcfg_pull_up_4ma>;
|
||||
+ <1 RK_PA5 RK_FUNC_1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_wrprt: sdmmc0-wrprt {
|
||||
@@ -2087,15 +2087,15 @@
|
||||
|
||||
sdmmc0_bus1: sdmmc0-bus1 {
|
||||
rockchip,pins =
|
||||
- <1 RK_PA0 RK_FUNC_1 &pcfg_pull_up_4ma>;
|
||||
+ <1 RK_PA0 RK_FUNC_1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_bus4: sdmmc0-bus4 {
|
||||
rockchip,pins =
|
||||
- <1 RK_PA0 RK_FUNC_1 &pcfg_pull_up_4ma>,
|
||||
- <1 RK_PA1 RK_FUNC_1 &pcfg_pull_up_4ma>,
|
||||
- <1 RK_PA2 RK_FUNC_1 &pcfg_pull_up_4ma>,
|
||||
- <1 RK_PA3 RK_FUNC_1 &pcfg_pull_up_4ma>;
|
||||
+ <1 RK_PA0 RK_FUNC_1 &pcfg_pull_up_8ma>,
|
||||
+ <1 RK_PA1 RK_FUNC_1 &pcfg_pull_up_8ma>,
|
||||
+ <1 RK_PA2 RK_FUNC_1 &pcfg_pull_up_8ma>,
|
||||
+ <1 RK_PA3 RK_FUNC_1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_gpio: sdmmc0-gpio {
|
|
@ -19,22 +19,6 @@ index d1aebf7..93e3658 100644
|
|||
obj-$(CONFIG_RTL8723DS) += rtl8723ds/
|
||||
obj-$(CONFIG_RTL8822BE) += rtl8822be/
|
||||
+obj-$(CONFIG_RTL8822BS) += rtl8822bs/
|
||||
obj-$(CONFIG_SSV6051) += ssv6xxx/
|
||||
obj-$(CONFIG_MVL88W8977) += mvl88w8977/
|
||||
obj-$(CONFIG_WL_ROCKCHIP) += wifi_sys/rkwifi_sys_iface.o
|
||||
obj-$(CONFIG_WL_ROCKCHIP) += rkwifi/rk_wifi_config.o
|
||||
diff --git a/drivers/net/wireless/rockchip_wlan/Makefile.rej b/drivers/net/wireless/rockchip_wlan/Makefile.rej
|
||||
new file mode 100644
|
||||
index 0000000..a275c66
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/wireless/rockchip_wlan/Makefile.rej
|
||||
@@ -0,0 +1,10 @@
|
||||
+--- drivers/net/wireless/rockchip_wlan/Makefile
|
||||
++++ drivers/net/wireless/rockchip_wlan/Makefile
|
||||
+@@ -9,6 +9,7 @@ obj-$(CONFIG_RTL8723BU) += rtl8723bu/
|
||||
+ obj-$(CONFIG_RTL8723CS) += rtl8723cs/
|
||||
+ obj-$(CONFIG_RTL8723DS) += rtl8723ds/
|
||||
+ obj-$(CONFIG_RTL8822BE) += rtl8822be/
|
||||
++obj-$(CONFIG_RTL8822BS) += rtl8822bs/
|
||||
+ obj-$(CONFIG_MVL88W8977) += mvl88w8977/
|
||||
+ obj-$(CONFIG_WL_ROCKCHIP) += wifi_sys/rkwifi_sys_iface.o
|
||||
+ obj-$(CONFIG_WL_ROCKCHIP) += rkwifi/rk_wifi_config.o
|
||||
|
|
Loading…
Add table
Reference in a new issue