Linux 6.1.15
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.15 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/trace/ftrace.rst | 2 Makefile | 2 arch/arm/boot/dts/rk3288.dtsi | 1 arch/arm/boot/dts/stihxxx-b2120.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 2 arch/arm64/boot/dts/rockchip/rk3399-op1-opp.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 7 arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts | 2 arch/arm64/boot/dts/rockchip/rk356x.dtsi | 1 arch/arm64/boot/dts/socionext/uniphier-pxs3-ref-gadget0.dts | 2 arch/arm64/boot/dts/socionext/uniphier-pxs3-ref-gadget1.dts | 2 arch/powerpc/Kconfig | 1 arch/x86/include/asm/intel-family.h | 2 drivers/acpi/nfit/core.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 150 ++++------ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 17 - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 10 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.c | 24 + drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.h | 2 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_init.c | 2 drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h | 25 + drivers/hid/hid-core.c | 3 drivers/hid/hid-elecom.c | 16 - drivers/hid/hid-ids.h | 5 drivers/hid/hid-input.c | 4 drivers/hid/hid-quirks.c | 3 drivers/infiniband/hw/hfi1/user_exp_rcv.c | 9 drivers/pinctrl/pinctrl-amd.c | 1 drivers/tty/vt/vc_screen.c | 7 drivers/usb/core/hub.c | 5 drivers/usb/core/sysfs.c | 5 drivers/usb/dwc3/dwc3-pci.c | 4 drivers/usb/gadget/function/u_serial.c | 23 + drivers/usb/serial/option.c | 4 drivers/usb/typec/pd.c | 1 fs/attr.c | 74 ++++ fs/btrfs/send.c | 6 fs/fuse/file.c | 2 fs/inode.c | 64 +--- fs/internal.h | 10 fs/ocfs2/file.c | 4 fs/open.c | 8 include/linux/fs.h | 4 kernel/power/process.c | 21 - net/caif/caif_socket.c | 1 net/core/filter.c | 4 net/core/neighbour.c | 18 + net/core/stream.c | 1 net/xfrm/xfrm_interface.c | 54 +++ net/xfrm/xfrm_policy.c | 3 scripts/tags.sh | 2 sound/soc/codecs/es8326.c | 6 sound/soc/codecs/rt715-sdca-sdw.c | 2 sound/soc/sof/amd/acp.c | 36 +- tools/testing/selftests/drivers/net/ocelot/tc_flower_chains.sh | 2 55 files changed, 445 insertions(+), 227 deletions(-)
Alan Stern (1):
USB: core: Don't hold device lock while reading the "descriptors" sysfs file
Alexey Firago (1):
ASoC: codecs: es8326: Fix DTS properties reading
Benedict Wong (1):
Fix XFRM-I support for nested ESP tunnels
Carlos Llamas (1):
scripts/tags.sh: fix incompatibility with PCRE2
Christian Brauner (5):
attr: add in_group_or_capable()
fs: move should_remove_suid()
attr: add setattr_should_drop_sgid()
attr: use consistent sgid stripping checks
fs: use consistent setgid checks in is_sxid()
David Sterba (1):
btrfs: send: limit number of clones and allocated memory size
Dean Luick (1):
IB/hfi1: Assign npages earlier
Dmitry Torokhov (1):
ARM: dts: stihxxx-b2120: fix polarity of reset line of tsin0 port
Florian Zumbiehl (1):
USB: serial: option: add support for VW/Skoda "Carstick LTE"
Greg Kroah-Hartman (1):
Linux 6.1.15
Heikki Krogerus (1):
usb: dwc3: pci: add support for the Intel Meteor Lake-M
Jack Yu (1):
ASoC: rt715-sdca: fix clock stop prepare timeout issue
Jarrah Gosbell (1):
arm64: dts: rockchip: reduce thermal limits on rk3399-pinephone-pro
Jensen Huang (1):
arm64: dts: rockchip: add missing #interrupt-cells to rk356x pcie2x1
Johan Jonker (1):
ARM: dts: rockchip: add power-domains property to dp node on rk3288
Jonas Karlman (1):
arm64: dts: rockchip: fix probe of analog sound card on rock-3a
Julian Anastasov (1):
neigh: make sure used and confirmed times are valid
Kan Liang (1):
x86/cpu: Add Lunar Lake M
Krzysztof Kozlowski (2):
arm64: dts: rockchip: drop unused LED mode property from rk3328-roc-cc
arm64: dts: rockchip: align rk3399 DMC OPP table with bindings
Kunihiko Hayashi (1):
arm64: dts: uniphier: Fix property name in PXs3 USB node
Kuniyuki Iwashima (1):
net: Remove WARN_ON_ONCE(sk->sk_forward_alloc) from sk_stream_kill_queues().
Luka Guzenko (1):
HID: Ignore battery for ELAN touchscreen 29DF on HP
Mario Limonciello (1):
pinctrl: amd: Fix debug output for debounce time
Martin KaFai Lau (1):
bpf: bpf_fib_lookup should not return neigh in NUD_FAILED state
Michael Ellerman (1):
powerpc: Don't select ARCH_WANTS_NO_INSTR
Nicholas Kazlauskas (1):
drm/amd/display: Move DCN314 DOMAIN power control to DMCUB
Prashanth K (1):
usb: gadget: u_serial: Add null pointer check in gserial_resume
Rafael J. Wysocki (1):
PM: sleep: Avoid using pr_cont() in the tasks freezing code
Saranya Gopal (1):
usb: typec: pd: Remove usb_suspend_supported sysfs from sink PDO
Stylon Wang (2):
drm/amd/display: Fix race condition in DPIA AUX transfer drm/amd/display: Properly reuse completion structure
Takahiro Fujii (1):
HID: elecom: add support for TrackBall 056E:011C
Thomas Weißschuh (1):
vc_screen: don't clobber return value in vcs_read
V sujith kumar Reddy (1):
ASoC: SOF: amd: Fix for handling spurious interrupts from DSP
Vishal Verma (1):
ACPI: NFIT: fix a potential deadlock during NFIT teardown
Vladimir Oltean (1):
selftests: ocelot: tc_flower_chains: make test_vlan_ingress_modify() more comprehensive
Xin Zhao (1):
HID: core: Fix deadloop in hid_apply_multiplier.
[email protected] (1):
HID: Ignore battery for Elan touchscreen on Asus TP420IA
Greg Kroah-Hartman
maintainerDocumentation/trace/ftrace.rst +1 -1
@@ -2940,7 +2940,7 @@ Produces:: bash-1994 [000] .... 4342.324898: ima_get_action <-process_measurement bash-1994 [000] .... 4342.324898: ima_match_policy <-ima_get_action bash-1994 [000] .... 4342.324899: do_truncate <-do_last - bash-1994 [000] .... 4342.324899: should_remove_suid <-do_truncate + bash-1994 [000] .... 4342.324899: setattr_should_drop_suidgid <-do_truncate bash-1994 [000] .... 4342.324899: notify_change <-do_truncate bash-1994 [000] .... 4342.324900: current_fs_time <-notify_change bash-1994 [000] .... 4342.324900: current_kernel_time <-current_fs_time
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 14 +SUBLEVEL = 15 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/boot/dts/rk3288.dtsi +1 -0
@@ -1181,6 +1181,7 @@ edp: dp@ff970000 { clock-names = "dp", "pclk"; phys = <&edp_phy>; phy-names = "dp"; + power-domains = <&power RK3288_PD_VIO>; resets = <&cru SRST_EDP>; reset-names = "dp"; rockchip,grf = <&grf>;
arch/arm/boot/dts/stihxxx-b2120.dtsi +1 -1
@@ -178,7 +178,7 @@ tsin0: port { tsin-num = <0>; serial-not-parallel; i2c-bus = <&ssc2>; - reset-gpios = <&pio15 4 GPIO_ACTIVE_HIGH>; + reset-gpios = <&pio15 4 GPIO_ACTIVE_LOW>; dvb-card = <STV0367_TDA18212_NIMA_1>; }; };
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +0 -2
@@ -96,7 +96,6 @@ power_led: led-0 { linux,default-trigger = "heartbeat"; gpios = <&rk805 1 GPIO_ACTIVE_LOW>; default-state = "on"; - mode = <0x23>; }; user_led: led-1 {
@@ -104,7 +103,6 @@ user_led: led-1 { linux,default-trigger = "mmc1"; gpios = <&rk805 0 GPIO_ACTIVE_LOW>; default-state = "off"; - mode = <0x05>; }; }; };
arch/arm64/boot/dts/rockchip/rk3399-op1-opp.dtsi +1 -1
@@ -111,7 +111,7 @@ opp05 { }; }; - dmc_opp_table: dmc_opp_table { + dmc_opp_table: opp-table-3 { compatible = "operating-points-v2"; opp00 {
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts +7 -0
@@ -83,6 +83,13 @@ vcc1v8_codec: vcc1v8-codec-regulator { }; }; +&cpu_alert0 { + temperature = <65000>; +}; +&cpu_alert1 { + temperature = <68000>; +}; + &cpu_l0 { cpu-supply = <&vdd_cpu_l>; };
arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts +2 -0
@@ -521,6 +521,8 @@ &i2s0_8ch { }; &i2s1_8ch { + pinctrl-names = "default"; + pinctrl-0 = <&i2s1m0_sclktx &i2s1m0_lrcktx &i2s1m0_sdi0 &i2s1m0_sdo0>; rockchip,trcm-sync-tx-only; status = "okay"; };
arch/arm64/boot/dts/rockchip/rk356x.dtsi +1 -0
@@ -966,6 +966,7 @@ pcie2x1: pcie@fe260000 { clock-names = "aclk_mst", "aclk_slv", "aclk_dbi", "pclk", "aux"; device_type = "pci"; + #interrupt-cells = <1>; interrupt-map-mask = <0 0 0 7>; interrupt-map = <0 0 0 1 &pcie_intc 0>, <0 0 0 2 &pcie_intc 1>,
arch/arm64/boot/dts/socionext/uniphier-pxs3-ref-gadget0.dts +1 -1
@@ -24,7 +24,7 @@ &usb0 { snps,dis_enblslpm_quirk; snps,dis_u2_susphy_quirk; snps,dis_u3_susphy_quirk; - snps,usb2_gadget_lpm_disable; + snps,usb2-gadget-lpm-disable; phy-names = "usb2-phy", "usb3-phy"; phys = <&usb0_hsphy0>, <&usb0_ssphy0>; };
arch/arm64/boot/dts/socionext/uniphier-pxs3-ref-gadget1.dts +1 -1
@@ -24,7 +24,7 @@ &usb1 { snps,dis_enblslpm_quirk; snps,dis_u2_susphy_quirk; snps,dis_u3_susphy_quirk; - snps,usb2_gadget_lpm_disable; + snps,usb2-gadget-lpm-disable; phy-names = "usb2-phy", "usb3-phy"; phys = <&usb1_hsphy0>, <&usb1_ssphy0>; };
arch/powerpc/Kconfig +0 -1
@@ -161,7 +161,6 @@ config PPC select ARCH_WANT_IRQS_OFF_ACTIVATE_MM select ARCH_WANT_LD_ORPHAN_WARN select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx - select ARCH_WANTS_NO_INSTR select ARCH_WEAK_RELEASE_ACQUIRE select BINFMT_ELF select BUILDTIME_TABLE_SORT
arch/x86/include/asm/intel-family.h +2 -0
@@ -123,6 +123,8 @@#define INTEL_FAM6_METEORLAKE 0xAC#define INTEL_FAM6_METEORLAKE_L 0xAA +#define INTEL_FAM6_LUNARLAKE_M 0xBD +/* "Small Core" Processors (Atom/E-Core) */ #define INTEL_FAM6_ATOM_BONNELL 0x1C/* Diamondville, Pineview */
drivers/acpi/nfit/core.c +1 -1
@@ -3297,8 +3297,8 @@ void acpi_nfit_shutdown(void *data)mutex_lock (&acpi_desc->init_mutex);set_bit (ARS_CANCEL , &acpi_desc->scrub_flags); -cancel_delayed_work_sync (&acpi_desc->dwork);mutex_unlock (&acpi_desc->init_mutex); +cancel_delayed_work_sync (&acpi_desc->dwork);/* * Bounce the nvdimm bus lock to make sure any in-flight
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +74 -76
191 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +14 -3
@@ -59,7 +59,9 @@#include "signal_types.h" #include "amdgpu_dm_crc.h" struct aux_payload ; +struct set_config_cmd_payload ;enum aux_return_code_type ; +enum set_config_status ;/* Forward declarations */ struct amdgpu_device ;
@@ -549,6 +551,13 @@ struct amdgpu_display_manager {* occurred on certain intel platform */ bool aux_hpd_discon_quirk; + +/** +* @dpia_aux_lock: +* +* Guards access to DPIA AUX +*/ +struct mutex dpia_aux_lock; };enum dsc_clock_force_state {
@@ -792,9 +801,11 @@ void amdgpu_dm_update_connector_after_detect(extern const struct drm_encoder_helper_funcs amdgpu_dm_encoder_helper_funcs; -int amdgpu_dm_process_dmub_aux_transfer_sync (bool is_cmd_aux, -struct dc_context *ctx,unsigned int link_index, -void *payload,void *operation_result); +int amdgpu_dm_process_dmub_aux_transfer_sync (struct dc_context *ctx,unsigned int link_index, +struct aux_payload *payload,enum aux_return_code_type *operation_result); + +int amdgpu_dm_process_dmub_set_config_sync (struct dc_context *ctx,unsigned int link_index, +struct set_config_cmd_payload *payload,enum set_config_status *operation_result);bool check_seamless_boot_capability (struct amdgpu_device *adev);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +4 -6
@@ -844,9 +844,8 @@ int dm_helper_dmub_aux_transfer_sync(struct aux_payload *payload, enum aux_return_code_type *operation_result) { - return amdgpu_dm_process_dmub_aux_transfer_sync(true, ctx, - link->link_index, (void *)payload, - (void *)operation_result); + return amdgpu_dm_process_dmub_aux_transfer_sync(ctx, link->link_index, payload, +operation_result ); } int dm_helpers_dmub_set_config_sync(struct dc_context *ctx,
@@ -854,9 +853,8 @@ int dm_helpers_dmub_set_config_sync(struct dc_context *ctx,struct set_config_cmd_payload *payload, enum set_config_status *operation_result) { - return amdgpu_dm_process_dmub_aux_transfer_sync(false, ctx, - link->link_index, (void *)payload, - (void *)operation_result); + return amdgpu_dm_process_dmub_set_config_sync(ctx, link->link_index, payload, +operation_result ); }void dm_set_dcn_clocks (struct dc_context *ctx,struct dc_clocks *clks)
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.c +24 -0
@@ -391,3 +391,27 @@ void dcn314_set_pixels_per_cycle(struct pipe_ctx *pipe_ctx) pipe_ctx->stream_res.stream_enc->funcs->set_input_mode (pipe_ctx->stream_res.stream_enc, pix_per_cycle); } + +void dcn314_hubp_pg_control (struct dce_hwseq *hws,unsigned int hubp_inst,bool power_on) +{ +struct dc_context *ctx = hws->ctx; +union dmub_rb_cmd cmd; + +if (hws->ctx->dc->debug.disable_hubp_power_gate) +return ; + +PERF_TRACE (); + +memset (&cmd,0 ,sizeof (cmd)); + cmd.domain_control.header.type =DMUB_CMD__VBIOS ; + cmd.domain_control.header.sub_type =DMUB_CMD__VBIOS_DOMAIN_CONTROL ; + cmd.domain_control.header.payload_bytes =sizeof (cmd.domain_control.data); + cmd.domain_control.data.inst = hubp_inst; + cmd.domain_control.data.power_gate = !power_on; + +dc_dmub_srv_cmd_queue (ctx->dmub_srv, &cmd); +dc_dmub_srv_cmd_execute (ctx->dmub_srv); +dc_dmub_srv_wait_idle (ctx->dmub_srv); + +PERF_TRACE (); +}
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.h +2 -0
@@ -41,4 +41,6 @@ unsigned int dcn314_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsigvoid dcn314_set_pixels_per_cycle (struct pipe_ctx *pipe_ctx); +void dcn314_hubp_pg_control (struct dce_hwseq *hws,unsigned int hubp_inst,bool power_on); +#endif /* __DC_HWSS_DCN314_H__ */
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_init.c +1 -1
@@ -137,7 +137,7 @@ static const struct hwseq_private_funcs dcn314_private_funcs = { .plane_atomic_disable = dcn20_plane_atomic_disable, .plane_atomic_power_down = dcn10_plane_atomic_power_down, .enable_power_gating_plane = dcn314_enable_power_gating_plane, - .hubp_pg_control = dcn31_hubp_pg_control, + .hubp_pg_control = dcn314_hubp_pg_control, .program_all_writeback_pipes_in_tree = dcn30_program_all_writeback_pipes_in_tree, .update_odm = dcn314_update_odm, .dsc_pg_control = dcn314_dsc_pg_control,
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h +25 -0
@@ -450,6 +450,10 @@ enum dmub_cmd_vbios_type {* Query DP alt status on a transmitter. */ DMUB_CMD__VBIOS_TRANSMITTER_QUERY_DP_ALT =26 , +/** +* Controls domain power gating +*/ + DMUB_CMD__VBIOS_DOMAIN_CONTROL = 28, };//==============================================================================
@@ -1191,6 +1195,23 @@ struct dmub_rb_cmd_dig1_transmitter_control {union dmub_cmd_dig1_transmitter_control_data transmitter_control;/**< payload */ }; +/** +* struct dmub_rb_cmd_domain_control_data - Data for DOMAIN power control +*/ +struct dmub_rb_cmd_domain_control_data { +uint8_t inst :6 ;/**< DOMAIN instance to control */ +uint8_t power_gate :1 ;/**< 1=power gate, 0=power up */ +uint8_t reserved[3 ];/**< Reserved for future use */ +}; + +/** +* struct dmub_rb_cmd_domain_control - Controls DOMAIN power gating +*/ +struct dmub_rb_cmd_domain_control { +struct dmub_cmd_header header;/**< header */ +struct dmub_rb_cmd_domain_control_data data;/**< payload */ +}; +/** * DPIA tunnel command parameters. */
@@ -3187,6 +3208,10 @@ union dmub_rb_cmd {* Definition of a DMUB_CMD__VBIOS_DIG1_TRANSMITTER_CONTROL command. */ struct dmub_rb_cmd_dig1_transmitter_control dig1_transmitter_control; +/** +* Definition of a DMUB_CMD__VBIOS_DOMAIN_CONTROL command. +*/ +struct dmub_rb_cmd_domain_control domain_control;/** * Definition of a DMUB_CMD__PSR_SET_VERSION command. */
drivers/hid/hid-core.c +3 -0
@@ -1202,6 +1202,7 @@ int hid_open_report(struct hid_device *device)__u8 *end;__u8 *next;int ret; +int i;static int (*dispatch_type[])(struct hid_parser *parser,struct hid_item *item) = { hid_parser_main,
@@ -1252,6 +1253,8 @@ int hid_open_report(struct hid_device *device) goto err; } device->collection_size =HID_DEFAULT_NUM_COLLECTIONS ; +for (i =0 ; i <HID_DEFAULT_NUM_COLLECTIONS ; i++) + device->collection[i].parent_idx =-1 ; ret = -EINVAL ;while ((next =fetch_item (start, end, &item)) !=NULL ) {
drivers/hid/hid-elecom.c +14 -2
@@ -12,6 +12,7 @@* Copyright (c) 2017 Alex Manoussakis <[email protected]> * Copyright (c) 2017 Tomasz Kramkowski <[email protected]> * Copyright (c) 2020 YOSHIOKA Takuma <[email protected]> +* Copyright (c) 2022 Takahiro Fujii <[email protected]> */ /*
@@ -89,7 +90,7 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,case USB_DEVICE_ID_ELECOM_M_DT1URBK :case USB_DEVICE_ID_ELECOM_M_DT1DRBK :case USB_DEVICE_ID_ELECOM_M_HT1URBK : -case USB_DEVICE_ID_ELECOM_M_HT1DRBK : +case USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D :/* * Report descriptor format: * 12: button bit count
@@ -99,6 +100,16 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,*/ mouse_button_fixup (hdev, rdesc, *rsize,12 ,30 ,14 ,20 ,8 );break ; +case USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C : +/* +* Report descriptor format: +* 22: button bit count +* 30: padding bit count +* 24: button report size +* 16: button usage maximum +*/ +mouse_button_fixup (hdev, rdesc, *rsize,22 ,30 ,24 ,16 ,8 ); +break ; }return rdesc; }
@@ -112,7 +123,8 @@ static const struct hid_device_id elecom_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) }, { } };MODULE_DEVICE_TABLE (hid, elecom_devices);
drivers/hid/hid-ids.h +4 -1
@@ -413,6 +413,8 @@#define I2C_DEVICE_ID_HP_ENVY_X360_15T_DR100 0x29CF#define I2C_DEVICE_ID_HP_ENVY_X360_EU0009NV 0x2CF9#define I2C_DEVICE_ID_HP_SPECTRE_X360_15 0x2817 +#define I2C_DEVICE_ID_HP_SPECTRE_X360_13_AW0020NG 0x29DF +#define I2C_DEVICE_ID_ASUS_TP420IA_TOUCHSCREEN 0x2BC8#define USB_DEVICE_ID_ASUS_UX550VE_TOUCHSCREEN 0x2544#define USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN 0x2706#define I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN 0x261A
@@ -428,7 +430,8 @@#define USB_DEVICE_ID_ELECOM_M_DT1URBK 0x00fe#define USB_DEVICE_ID_ELECOM_M_DT1DRBK 0x00ff#define USB_DEVICE_ID_ELECOM_M_HT1URBK 0x010c -#define USB_DEVICE_ID_ELECOM_M_HT1DRBK 0x010d +#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D 0x010d +#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C 0x011c#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34#define USB_DEVICE_ID_DREAM_CHEEKY_WN 0x0004
drivers/hid/hid-input.c +4 -0
@@ -370,6 +370,8 @@ static const struct hid_device_id hid_battery_quirks[] = { {HID_BLUETOOTH_DEVICE (USB_VENDOR_ID_LOGITECH ,USB_DEVICE_ID_LOGITECH_DINOVO_EDGE_KBD ), HID_BATTERY_QUIRK_IGNORE }, + { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_ASUS_TP420IA_TOUCHSCREEN), + HID_BATTERY_QUIRK_IGNORE }, { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN), HID_BATTERY_QUIRK_IGNORE }, { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550VE_TOUCHSCREEN),
@@ -384,6 +386,8 @@ static const struct hid_device_id hid_battery_quirks[] = { HID_BATTERY_QUIRK_IGNORE }, {HID_I2C_DEVICE (USB_VENDOR_ID_ELAN ,I2C_DEVICE_ID_HP_SPECTRE_X360_15 ), HID_BATTERY_QUIRK_IGNORE }, + { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_HP_SPECTRE_X360_13_AW0020NG), + HID_BATTERY_QUIRK_IGNORE }, { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_GO_TOUCHSCREEN), HID_BATTERY_QUIRK_IGNORE }, { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_GO2_TOUCHSCREEN),
drivers/hid/hid-quirks.c +2 -1
@@ -393,7 +393,8 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) }, { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) }, #endif #if IS_ENABLED(CONFIG_HID_ELO) { HID_USB_DEVICE(USB_VENDOR_ID_ELO, 0x0009) },
drivers/infiniband/hw/hfi1/user_exp_rcv.c +2 -7
@@ -160,16 +160,11 @@ static void unpin_rcv_pages(struct hfi1_filedata *fd,static int pin_rcv_pages (struct hfi1_filedata *fd,struct tid_user_buf *tidbuf) {int pinned; -unsigned int npages; +unsigned int npages = tidbuf->npages;unsigned long vaddr = tidbuf->vaddr;struct page **pages =NULL ;struct hfi1_devdata *dd = fd->uctxt->dd; -/* Get the number of pages the user buffer spans */ - npages =num_user_pages (vaddr, tidbuf->length); -if (!npages) -return -EINVAL ; -if (npages > fd->uctxt->expected_count) {dd_dev_err (dd,"Expected buffer too big\n" );return -EINVAL ;
@@ -196,7 +191,6 @@ static int pin_rcv_pages(struct hfi1_filedata *fd, struct tid_user_buf *tidbuf)return pinned; } tidbuf->pages = pages; - tidbuf->npages = npages; fd->tid_n_pinned += pinned;return pinned; }
@@ -274,6 +268,7 @@ int hfi1_user_exp_rcv_setup(struct hfi1_filedata *fd,mutex_init (&tidbuf->cover_mutex); tidbuf->vaddr = tinfo->vaddr; tidbuf->length = tinfo->length; + tidbuf->npages =num_user_pages (tidbuf->vaddr, tidbuf->length); tidbuf->psets =kcalloc (uctxt->expected_count,sizeof (*tidbuf->psets),GFP_KERNEL );if (!tidbuf->psets) {
drivers/pinctrl/pinctrl-amd.c +1 -0
@@ -365,6 +365,7 @@ static void amd_gpio_dbg_show(struct seq_file *s, struct gpio_chip *gc) }else { debounce_enable =" ∅" ; + time =0 ; }snprintf (debounce_value,sizeof (debounce_value),"%u" , time * unit);seq_printf (s,"debounce %s (🕑 %sus)| " , debounce_enable, debounce_value);
drivers/tty/vt/vc_screen.c +4 -3
@@ -403,10 +403,11 @@ vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)unsigned int this_round, skip =0 ;int size; - ret = -ENXIO ; vc =vcs_vc (inode, &viewed); -if (!vc) - goto unlock_out; +if (!vc) { + ret = -ENXIO ; +break ; + }/* Check whether we are above size each round, * as copy_to_user at the end of this loop
drivers/usb/core/hub.c +2 -3
@@ -2389,9 +2389,8 @@ static int usb_enumerate_device_otg(struct usb_device *udev)* usb_enumerate_device - Read device configs/intfs/otg (usbcore-internal) * @udev: newly addressed device (in ADDRESS state) * -* This is only called by usb_new_device() and usb_authorize_device() -* and FIXME -- all comments that apply to them apply here wrt to -* environment. +* This is only called by usb_new_device() -- all comments that apply there +* apply here wrt to environment. * * If the device is WUSB and not authorized, we don't attempt to read * the string descriptors, as they will be errored out by the device
drivers/usb/core/sysfs.c +0 -5
@@ -868,11 +868,7 @@ read_descriptors(struct file *filp, struct kobject *kobj,size_t srclen, n;int cfgno;void *src; -int retval; - retval =usb_lock_device_interruptible (udev); -if (retval <0 ) -return -EINTR ;/* The binary attribute begins with the device descriptor. * Following that are the raw descriptor entries for all the * configurations (config plus subsidiary descriptors).
@@ -897,7 +893,6 @@ read_descriptors(struct file *filp, struct kobject *kobj, off -= srclen; } } -usb_unlock_device (udev);return count - nleft; }
drivers/usb/dwc3/dwc3-pci.c +4 -0
@@ -47,6 +47,7 @@#define PCI_DEVICE_ID_INTEL_ADLS 0x7ae1#define PCI_DEVICE_ID_INTEL_RPL 0xa70e#define PCI_DEVICE_ID_INTEL_RPLS 0x7a61 +#define PCI_DEVICE_ID_INTEL_MTLM 0x7eb1#define PCI_DEVICE_ID_INTEL_MTLP 0x7ec1#define PCI_DEVICE_ID_INTEL_MTL 0x7e7e#define PCI_DEVICE_ID_INTEL_TGL 0x9a15
@@ -467,6 +468,9 @@ static const struct pci_device_id dwc3_pci_id_table[] = { {PCI_VDEVICE (INTEL ,PCI_DEVICE_ID_INTEL_RPLS ), (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLM), + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MTLP), (kernel_ulong_t) &dwc3_pci_intel_swnode, },
drivers/usb/gadget/function/u_serial.c +19 -4
@@ -81,6 +81,9 @@#define WRITE_BUF_SIZE 8192/* TX only */ #define GS_CONSOLE_BUF_SIZE 8192 +/* Prevents race conditions while accessing gser->ioport */ +static DEFINE_SPINLOCK (serial_port_lock); +/* console info */ struct gs_console {struct console console;
@@ -1374,8 +1377,10 @@ void gserial_disconnect(struct gserial *gser)if (!port)return ; +spin_lock_irqsave (&serial_port_lock, flags); +/* tell the TTY glue not to do I/O here any more */ -spin_lock_irqsave (&port->port_lock, flags); +spin_lock (&port->port_lock);gs_console_disconnect (port);
@@ -1390,7 +1395,8 @@ void gserial_disconnect(struct gserial *gser)tty_hangup (port->port.tty); } port->suspended = false; -spin_unlock_irqrestore (&port->port_lock, flags); +spin_unlock (&port->port_lock); +spin_unlock_irqrestore (&serial_port_lock, flags);/* disable endpoints, aborting down any active I/O */ usb_ep_disable (gser->out);
@@ -1424,10 +1430,19 @@ EXPORT_SYMBOL_GPL(gserial_suspend);void gserial_resume (struct gserial *gser) { -struct gs_port *port = gser->ioport; +struct gs_port *port;unsigned long flags; -spin_lock_irqsave (&port->port_lock, flags); +spin_lock_irqsave (&serial_port_lock, flags); + port = gser->ioport; + +if (!port) { +spin_unlock_irqrestore (&serial_port_lock, flags); +return ; + } + +spin_lock (&port->port_lock); +spin_unlock (&serial_port_lock); port->suspended = false;if (!port->start_delayed) {spin_unlock_irqrestore (&port->port_lock, flags);
drivers/usb/serial/option.c +4 -0
@@ -402,6 +402,8 @@ static void option_instat_callback(struct urb *urb);#define LONGCHEER_VENDOR_ID 0x1c9e/* 4G Systems products */ +/* This one was sold as the VW and Skoda "Carstick LTE" */ +#define FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE 0x7605/* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick * * It seems to contain a Qualcomm QSC6240/6290 chipset */ #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603
@@ -1976,6 +1978,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(2) }, { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_CARSTICK_LTE), + .driver_info = RSVD(0) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), .driver_info = NCTRL(0) | NCTRL(1) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100),
drivers/usb/typec/pd.c +0 -1
@@ -161,7 +161,6 @@ static struct device_type source_fixed_supply_type = {static struct attribute *sink_fixed_supply_attrs[] = { &dev_attr_dual_role_power.attr, - &dev_attr_usb_suspend_supported.attr, &dev_attr_unconstrained_power.attr, &dev_attr_usb_communication_capable.attr, &dev_attr_dual_role_data.attr,
fs/attr.c +68 -6
98 lines not on this page · raw message
fs/btrfs/send.c +3 -3
@@ -7839,10 +7839,10 @@ long btrfs_ioctl_send(struct inode *inode, struct btrfs_ioctl_send_args *arg)/* * Check that we don't overflow at later allocations, we request * clone_sources_count + 1 items, and compare to unsigned long inside -* access_ok. +* access_ok. Also set an upper limit for allocation size so this can't +* easily exhaust memory. Max number of clone sources is about 200K. */ -if (arg->clone_sources_count > -ULONG_MAX /sizeof (struct clone_root ) -1 ) { +if (arg->clone_sources_count >SZ_8M /sizeof (struct clone_root )) { ret = -EINVAL ; goto out; }
fs/fuse/file.c +1 -1
@@ -1313,7 +1313,7 @@ static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from)return err;if (fc->handle_killpriv_v2 && -should_remove_suid (file_dentry (file))) { +setattr_should_drop_suidgid (&init_user_ns,file_inode (file))) { goto writethrough; }
fs/inode.c +28 -36
100 lines not on this page · raw message
fs/internal.h +9 -1
@@ -150,7 +150,9 @@ extern int vfs_open(const struct path *, struct file *);* inode.c */ extern long prune_icache_sb (struct super_block *sb,struct shrink_control *sc); -extern int dentry_needs_remove_privs (struct dentry *dentry); +int dentry_needs_remove_privs (struct user_namespace *,struct dentry *dentry); +bool in_group_or_capable (struct user_namespace *mnt_userns, +const struct inode *inode,vfsgid_t vfsgid);/* * fs-writeback.c
@@ -234,3 +236,9 @@ int do_setxattr(struct user_namespace *mnt_userns, struct dentry *dentry, struct xattr_ctx *ctx);ssize_t __kernel_write_iter (struct file *file,struct iov_iter *from,loff_t *pos); + +/* +* fs/attr.c +*/ +int setattr_should_drop_sgid (struct user_namespace *mnt_userns, +const struct inode *inode);
fs/ocfs2/file.c +2 -2
@@ -1991,7 +1991,7 @@ static int __ocfs2_change_file_space(struct file *file, struct inode *inode, } } -if (file &&should_remove_suid (file->f_path.dentry)) { +if (file &&setattr_should_drop_suidgid (&init_user_ns,file_inode (file))) { ret =__ocfs2_write_remove_suid (inode, di_bh);if (ret) {mlog_errno (ret);
@@ -2279,7 +2279,7 @@ static int ocfs2_prepare_inode_for_write(struct file *file,* inode. There's also the dinode i_size state which * can be lost via setattr during extending writes (we * set inode->i_size at the end of a write. */ -if (should_remove_suid (dentry)) { +if (setattr_should_drop_suidgid (&init_user_ns, inode)) {if (meta_level ==0 ) { ocfs2_inode_unlock_for_extent_tree(inode, &di_bh,
fs/open.c +4 -4
@@ -54,7 +54,7 @@ int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry, }/* Remove suid, sgid, and file capabilities on truncate too */ - ret =dentry_needs_remove_privs (dentry); + ret =dentry_needs_remove_privs (mnt_userns, dentry);if (ret <0 )return ret;if (ret)
@@ -723,10 +723,10 @@ int chown_common(const struct path *path, uid_t user, gid_t group)return -EINVAL ;if ((group != (gid_t)-1 ) && !setattr_vfsgid (&newattrs, gid))return -EINVAL ; -if (!S_ISDIR (inode->i_mode)) - newattrs.ia_valid |= -ATTR_KILL_SUID |ATTR_KILL_SGID |ATTR_KILL_PRIV ;inode_lock (inode); +if (!S_ISDIR (inode->i_mode)) + newattrs.ia_valid |=ATTR_KILL_SUID |ATTR_KILL_PRIV | +setattr_should_drop_sgid (mnt_userns, inode);/* Continue to send actual fs values, not the mount values. */ error = security_path_chown( path,
include/linux/fs.h +2 -2
@@ -3118,7 +3118,7 @@ extern void __destroy_inode(struct inode *);extern struct inode *new_inode_pseudo (struct super_block *sb);extern struct inode *new_inode (struct super_block *sb);extern void free_inode_nonrcu (struct inode *inode); -extern int should_remove_suid (struct dentry *); +extern int setattr_should_drop_suidgid (struct user_namespace *,struct inode *);extern int file_remove_privs (struct file *);/*
@@ -3549,7 +3549,7 @@ int __init list_bdev_fs_names(char *buf, size_t size);static inline bool is_sxid (umode_t mode) { -return (mode &S_ISUID ) || ((mode &S_ISGID ) && (mode &S_IXGRP )); +return mode & (S_ISUID |S_ISGID ); } static inline int check_sticky(struct user_namespace *mnt_userns,
kernel/power/process.c +8 -13
@@ -27,6 +27,8 @@ unsigned int __read_mostly freeze_timeout_msecs = 20 * MSEC_PER_SEC;static int try_to_freeze_tasks (bool user_only) { +const char *what = user_only ?"user space processes" : +"remaining freezable tasks" ;struct task_struct *g, *p;unsigned long end_time;unsigned int todo;
@@ -36,6 +38,8 @@ static int try_to_freeze_tasks(bool user_only)bool wakeup = false;int sleep_usecs =USEC_PER_MSEC ; +pr_info ("Freezing %s\n" , what); + start =ktime_get_boottime (); end_time = jiffies +msecs_to_jiffies (freeze_timeout_msecs);
@@ -82,7 +86,6 @@ static int try_to_freeze_tasks(bool user_only) elapsed_msecs =ktime_to_ms (elapsed);if (todo) { -pr_cont ("\n" ); pr_err("Freezing of tasks %s after %d.%03d seconds " "(%d tasks refusing to freeze, wq_busy=%d):\n", wakeup ? "aborted" : "failed",
@@ -101,8 +104,8 @@ static int try_to_freeze_tasks(bool user_only)read_unlock (&tasklist_lock); } }else { -pr_cont ("(elapsed %d.%03d seconds) " , elapsed_msecs /1000 , - elapsed_msecs %1000 ); +pr_info ("Freezing %s completed (elapsed %d.%03d seconds)\n" , + what, elapsed_msecs /1000 , elapsed_msecs %1000 ); }return todo ? -EBUSY :0 ;
@@ -130,14 +133,11 @@ int freeze_processes(void)static_branch_inc (&freezer_active);pm_wakeup_clear (0 ); -pr_info ("Freezing user space processes ... " ); pm_freezing = true; error =try_to_freeze_tasks (true); -if (!error) { +if (!error)__usermodehelper_set_disable_depth (UMH_DISABLED ); -pr_cont ("done." ); - } -pr_cont ("\n" ); +BUG_ON (in_atomic ());/*
@@ -166,14 +166,9 @@ int freeze_kernel_threads(void) {int error; -pr_info ("Freezing remaining freezable tasks ... " ); - pm_nosig_freezing = true; error =try_to_freeze_tasks (false); -if (!error) -pr_cont ("done." ); -pr_cont ("\n" );BUG_ON (in_atomic ());if (error)
net/caif/caif_socket.c +1 -0
@@ -1015,6 +1015,7 @@ static void caif_sock_destructor(struct sock *sk)return ; }sk_stream_kill_queues (&cf_sk->sk); +WARN_ON_ONCE (sk->sk_forward_alloc);caif_free_client (&cf_sk->layer); }
net/core/filter.c +2 -2
@@ -5807,7 +5807,7 @@ static int bpf_ipv4_fib_lookup(struct net *net, struct bpf_fib_lookup *params, neigh =__ipv6_neigh_lookup_noref_stub (dev, dst); } -if (!neigh) +if (!neigh || !(neigh->nud_state &NUD_VALID ))return BPF_FIB_LKUP_RET_NO_NEIGH ;return bpf_fib_set_fwd_params (params, neigh, dev, mtu);
@@ -5922,7 +5922,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struct bpf_fib_lookup *params,* not needed here. */ neigh =__ipv6_neigh_lookup_noref_stub (dev, dst); -if (!neigh) +if (!neigh || !(neigh->nud_state &NUD_VALID ))return BPF_FIB_LKUP_RET_NO_NEIGH ;return bpf_fib_set_fwd_params (params, neigh, dev, mtu);
net/core/neighbour.c +15 -3
@@ -269,7 +269,7 @@ static int neigh_forced_gc(struct neigh_table *tbl) (n->nud_state == NUD_NOARP) || (tbl->is_multicast && tbl->is_multicast(n->primary_key)) || - time_after(tref, n->updated)) + !time_in_range(n->updated, tref, jiffies)) remove = true;write_unlock (&n->lock);
@@ -289,7 +289,17 @@ static int neigh_forced_gc(struct neigh_table *tbl)static void neigh_add_timer (struct neighbour *n,unsigned long when) { +/* Use safe distance from the jiffies - LONG_MAX point while timer +* is running in DELAY/PROBE state but still show to user space +* large times in the past. +*/ +unsigned long mint = jiffies - (LONG_MAX -86400 *HZ ); +neigh_hold (n); +if (!time_in_range (n->confirmed, mint, jiffies)) + n->confirmed = mint; +if (time_before (n->used, n->confirmed)) + n->used = n->confirmed;if (unlikely (mod_timer (&n->timer, when))) {printk ("NEIGH: BUG, double timer add, state is %x\n" , n->nud_state);
@@ -1001,12 +1011,14 @@ static void neigh_periodic_work(struct work_struct *work) goto next_elt; } -if (time_before (n->used, n->confirmed)) +if (time_before (n->used, n->confirmed) && +time_is_before_eq_jiffies (n->confirmed)) n->used = n->confirmed;if (refcount_read (&n->refcnt) ==1 && (state ==NUD_FAILED || -time_after (jiffies, n->used +NEIGH_VAR (n->parms,GC_STALETIME )))) { + !time_in_range_open (jiffies, n->used, + n->used +NEIGH_VAR (n->parms,GC_STALETIME )))) { *np = n->next;neigh_mark_dead (n);write_unlock (&n->lock);
net/core/stream.c +0 -1
@@ -209,7 +209,6 @@ void sk_stream_kill_queues(struct sock *sk)sk_mem_reclaim_final (sk);WARN_ON_ONCE (sk->sk_wmem_queued); -WARN_ON_ONCE (sk->sk_forward_alloc);/* It is _impossible_ for the backlog to contain anything * when we get here. All user references to this socket
net/xfrm/xfrm_interface.c +50 -4
72 lines not on this page · raw message
net/xfrm/xfrm_policy.c +3 -0
@@ -3670,6 +3670,9 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb, goto reject; } +if (if_id) +secpath_reset (skb); +xfrm_pols_put (pols, npols);return 1 ; }
scripts/tags.sh +1 -1
@@ -91,7 +91,7 @@ all_compiled_sources() { echo include/generated/autoconf.h find $ignore -name "*.cmd" -exec \ - grep -Poh '(?(?=^source_.* \K).*|(?=^ \K\S).*(?= \\))' {} \+ | + sed -n -E 's/^source_.* (.*)/\1/p; s/^ (\S.*) \\/\1/p' {} \+ | awk '!a[$0]++' } | xargs realpath -esq $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) | sort -u
sound/soc/codecs/es8326.c +4 -2
@@ -729,14 +729,16 @@ static int es8326_probe(struct snd_soc_component *component) }dev_dbg (component->dev,"jack-pol %x" , es8326->jack_pol); - ret =device_property_read_u8 (component->dev,"everest,interrupt-src" , &es8326->jack_pol); + ret =device_property_read_u8 (component->dev,"everest,interrupt-src" , + &es8326->interrupt_src);if (ret !=0 ) {dev_dbg (component->dev,"interrupt-src return %d" , ret); es8326->interrupt_src =ES8326_HP_DET_SRC_PIN9 ; }dev_dbg (component->dev,"interrupt-src %x" , es8326->interrupt_src); - ret =device_property_read_u8 (component->dev,"everest,interrupt-clk" , &es8326->jack_pol); + ret =device_property_read_u8 (component->dev,"everest,interrupt-clk" , + &es8326->interrupt_clk);if (ret !=0 ) {dev_dbg (component->dev,"interrupt-clk return %d" , ret); es8326->interrupt_clk =0x45 ;
sound/soc/codecs/rt715-sdca-sdw.c +1 -1
@@ -167,7 +167,7 @@ static int rt715_sdca_read_prop(struct sdw_slave *slave) }/* set the timeout values */ - prop->clk_stop_timeout =20 ; + prop->clk_stop_timeout =200 ;return 0 ; }
sound/soc/sof/amd/acp.c +15 -21
@@ -316,7 +316,6 @@ static irqreturn_t acp_irq_thread(int irq, void *context) {struct snd_sof_dev *sdev = context;const struct sof_amd_acp_desc *desc =get_chip_info (sdev->pdata); -unsigned int base = desc->dsp_intr_base;unsigned int val, count =ACP_HW_SEM_RETRY_COUNT ; val =snd_sof_dsp_read (sdev,ACP_DSP_BAR , desc->ext_intr_stat);
@@ -326,28 +325,20 @@ static irqreturn_t acp_irq_thread(int irq, void *context)return IRQ_HANDLED ; } - val =snd_sof_dsp_read (sdev,ACP_DSP_BAR , base +DSP_SW_INTR_STAT_OFFSET ); -if (val &ACP_DSP_TO_HOST_IRQ ) { -while (snd_sof_dsp_read (sdev,ACP_DSP_BAR , desc->hw_semaphore_offset)) { -/* Wait until acquired HW Semaphore lock or timeout */ - count--; -if (!count) { -dev_err (sdev->dev,"%s: Failed to acquire HW lock\n" , __func__); -return IRQ_NONE ; - } +while (snd_sof_dsp_read (sdev,ACP_DSP_BAR , desc->hw_semaphore_offset)) { +/* Wait until acquired HW Semaphore lock or timeout */ + count--; +if (!count) { +dev_err (sdev->dev,"%s: Failed to acquire HW lock\n" , __func__); +return IRQ_NONE ; } - -sof_ops (sdev)->irq_thread (irq, sdev); - val |=ACP_DSP_TO_HOST_IRQ ; -snd_sof_dsp_write (sdev,ACP_DSP_BAR , base +DSP_SW_INTR_STAT_OFFSET , val); - -/* Unlock or Release HW Semaphore */ -snd_sof_dsp_write (sdev,ACP_DSP_BAR , desc->hw_semaphore_offset,0x0 ); - -return IRQ_HANDLED ; } -return IRQ_NONE ; +sof_ops (sdev)->irq_thread (irq, sdev); +/* Unlock or Release HW Semaphore */ +snd_sof_dsp_write (sdev,ACP_DSP_BAR , desc->hw_semaphore_offset,0x0 ); + +return IRQ_HANDLED ; };static irqreturn_t acp_irq_handler (int irq,void *dev_id)
@@ -358,8 +349,11 @@ static irqreturn_t acp_irq_handler(int irq, void *dev_id)unsigned int val; val =snd_sof_dsp_read (sdev,ACP_DSP_BAR , base +DSP_SW_INTR_STAT_OFFSET ); -if (val) +if (val) { + val |=ACP_DSP_TO_HOST_IRQ ; +snd_sof_dsp_write (sdev,ACP_DSP_BAR , base +DSP_SW_INTR_STAT_OFFSET , val);return IRQ_WAKE_THREAD ; + }return IRQ_NONE ; }
tools/testing/selftests/drivers/net/ocelot/tc_flower_chains.sh +1 -1
@@ -246,7 +246,7 @@ test_vlan_ingress_modify() bridge vlan add dev $swp2 vid 300 tc filter add dev $swp1 ingress chain $(IS1 2) pref 3 \ - protocol 802.1Q flower skip_sw vlan_id 200 \ + protocol 802.1Q flower skip_sw vlan_id 200 src_mac $h1_mac \ action vlan modify id 300 \ action goto chain $(IS2 0 0)