Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e5b0513
Input: lkkbd - disable pending work before freeing device
ii4gsp Dec 12, 2025
02b7771
Input: atkbd - skip deactivate for HONOR FMB-P's internal keyboard
Cryolitia Oct 23, 2025
365350b
Input: i8042 - add TUXEDO InfinityBook Max Gen10 AMD to i8042 quirk t…
tuxedoxt Nov 24, 2025
07fb2f7
Input: alps - fix use-after-free bugs caused by dev3_register_work
stonezdm Dec 17, 2025
2573126
Input: apple_z2 - fix reading incorrect reports after exiting sleep
WhatAmISupposedToPutHere Dec 18, 2025
5811a4c
Input: add ABS_SND_PROFILE
soyersoyer Nov 13, 2025
27d364c
Input: xpad - add support for CRKD Guitars
sanjay900 Nov 29, 2025
a1aeb0c
Input: ti_am335x_tsc - fix off-by-one error in wire_order validation
Junjie650 Dec 19, 2025
f1bc835
scripts: coccicheck: filter *.cocci files by MODE
Jun 6, 2025
a6f24eb
Coccinelle: pm_runtime: Fix typo in report message
toblux Nov 22, 2025
b9bd300
Linux 6.19-rc2
torvalds Dec 21, 2025
9582d90
bpf: Introduce bpf_buffer_parser() kfunc
Dec 17, 2025
45fc46e
kexec_file: Move signature validation ahead
Sep 11, 2025
3a2e8c6
kexec_file: Introduce routine to parse PE file
Dec 23, 2025
1f7dadd
kexec_file: Use bpf-prog to decompose image
Sep 11, 2025
32b3abd
lib/decompress: Keep decompressor when CONFIG_KEEP_DECOMPRESSOR
Apr 2, 2025
a4a8323
kexec: Implement decompress method for parser
Dec 23, 2025
8a89977
kexec: Implement copy method for parser
Dec 25, 2025
98f8cf7
kexec: Introduce a bpf-prog lskel to parse PE file
Apr 21, 2025
b7943f4
kexec: Factor out routine to find a symbol in ELF
Jul 1, 2025
b116c8d
kexec: Integrate bpf light skeleton to load image with bpf-prog
Dec 24, 2025
47894f1
arm64/kexec: Select KEXEC_BPF to support UEFI-style kernel image
Mar 20, 2025
a389792
tools/kexec: Introduce a bpf-prog to parse zboot image format
Jun 3, 2025
9980d90
tools/kexec: Introduce a bpf-prog to parse zboot image format, based …
Jan 15, 2026
fb263d8
tools/kexec: Add a zboot image building tool
Jun 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Documentation/input/event-codes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,12 @@ A few EV_ABS codes have special meanings:
emitted only when the selected profile changes, indicating the newly
selected profile value.

* ABS_SND_PROFILE:

- Used to describe the state of a multi-value sound profile switch.
An event is emitted only when the selected profile changes,
indicating the newly selected profile value.

* ABS_MT_<name>:

- Used to describe multitouch input events. Please see
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
VERSION = 6
PATCHLEVEL = 19
SUBLEVEL = 0
EXTRAVERSION = -rc1
EXTRAVERSION = -rc2
NAME = Baby Opossum Posse

# *DOCUMENTATION*
Expand Down
1 change: 1 addition & 0 deletions arch/arm64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1587,6 +1587,7 @@ config ARCH_SELECTS_KEXEC_FILE
def_bool y
depends on KEXEC_FILE
select HAVE_IMA_KEXEC if IMA
select KEXEC_BPF if DEBUG_INFO_BTF && BPF_SYSCALL

config ARCH_SUPPORTS_KEXEC_SIG
def_bool y
Expand Down
1 change: 1 addition & 0 deletions drivers/hid/hid-debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -3513,6 +3513,7 @@ static const char *absolutes[ABS_CNT] = {
[ABS_DISTANCE] = "Distance", [ABS_TILT_X] = "XTilt",
[ABS_TILT_Y] = "YTilt", [ABS_TOOL_WIDTH] = "ToolWidth",
[ABS_VOLUME] = "Volume", [ABS_PROFILE] = "Profile",
[ABS_SND_PROFILE] = "SoundProfile",
[ABS_MISC] = "Misc",
[ABS_MT_SLOT] = "MTSlot",
[ABS_MT_TOUCH_MAJOR] = "MTMajor",
Expand Down
5 changes: 5 additions & 0 deletions drivers/input/joystick/xpad.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ static const struct xpad_device {
} xpad_device[] = {
/* Please keep this list sorted by vendor and product ID. */
{ 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 },
{ 0x0351, 0x1000, "CRKD LP Blueberry Burst Pro Edition (Xbox)", 0, XTYPE_XBOX360 },
{ 0x0351, 0x2000, "CRKD LP Black Tribal Edition (Xbox) ", 0, XTYPE_XBOX360 },

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There is a trailing space in the device name string "CRKD LP Black Tribal Edition (Xbox) ". This should be removed for consistency and to avoid potential issues with string handling in userspace.

 0x0351, 0x2000, "CRKD LP Black Tribal Edition (Xbox)", 0, XTYPE_XBOX360 },

{ 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 },
{ 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 },
{ 0x03f0, 0x038D, "HyperX Clutch", 0, XTYPE_XBOX360 }, /* wired */
Expand Down Expand Up @@ -420,6 +422,7 @@ static const struct xpad_device {
{ 0x3285, 0x0663, "Nacon Evol-X", 0, XTYPE_XBOXONE },
{ 0x3537, 0x1004, "GameSir T4 Kaleid", 0, XTYPE_XBOX360 },
{ 0x3537, 0x1010, "GameSir G7 SE", 0, XTYPE_XBOXONE },
{ 0x3651, 0x1000, "CRKD SG", 0, XTYPE_XBOX360 },
{ 0x366c, 0x0005, "ByoWave Proteus Controller", MAP_SHARE_BUTTON, XTYPE_XBOXONE, FLAG_DELAY_INIT },
{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
{ 0x37d7, 0x2501, "Flydigi Apex 5", 0, XTYPE_XBOX360 },
Expand Down Expand Up @@ -518,6 +521,7 @@ static const struct usb_device_id xpad_table[] = {
*/
{ USB_INTERFACE_INFO('X', 'B', 0) }, /* Xbox USB-IF not-approved class */
XPAD_XBOX360_VENDOR(0x0079), /* GPD Win 2 controller */
XPAD_XBOX360_VENDOR(0x0351), /* CRKD Controllers */
XPAD_XBOX360_VENDOR(0x03eb), /* Wooting Keyboards (Legacy) */
XPAD_XBOX360_VENDOR(0x03f0), /* HP HyperX Xbox 360 controllers */
XPAD_XBOXONE_VENDOR(0x03f0), /* HP HyperX Xbox One controllers */
Expand Down Expand Up @@ -578,6 +582,7 @@ static const struct usb_device_id xpad_table[] = {
XPAD_XBOXONE_VENDOR(0x3285), /* Nacon Evol-X */
XPAD_XBOX360_VENDOR(0x3537), /* GameSir Controllers */
XPAD_XBOXONE_VENDOR(0x3537), /* GameSir Controllers */
XPAD_XBOX360_VENDOR(0x3651), /* CRKD Controllers */
XPAD_XBOXONE_VENDOR(0x366c), /* ByoWave controllers */
XPAD_XBOX360_VENDOR(0x37d7), /* Flydigi Controllers */
XPAD_XBOX360_VENDOR(0x413d), /* Black Shark Green Ghost Controller */
Expand Down
7 changes: 7 additions & 0 deletions drivers/input/keyboard/atkbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1937,6 +1937,13 @@ static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = {
},
.callback = atkbd_deactivate_fixup,
},
{
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "HONOR"),
DMI_MATCH(DMI_PRODUCT_NAME, "FMB-P"),
},
.callback = atkbd_deactivate_fixup,
},
{ }
};

Expand Down
5 changes: 4 additions & 1 deletion drivers/input/keyboard/lkkbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,8 @@ static int lkkbd_connect(struct serio *serio, struct serio_driver *drv)

return 0;

fail3: serio_close(serio);
fail3: disable_work_sync(&lk->tq);
serio_close(serio);
fail2: serio_set_drvdata(serio, NULL);
fail1: input_free_device(input_dev);
kfree(lk);
Expand All @@ -684,6 +685,8 @@ static void lkkbd_disconnect(struct serio *serio)
{
struct lkkbd *lk = serio_get_drvdata(serio);

disable_work_sync(&lk->tq);

input_get_device(lk->dev);
input_unregister_device(lk->dev);
serio_close(serio);
Expand Down
1 change: 1 addition & 0 deletions drivers/input/mouse/alps.c
Original file line number Diff line number Diff line change
Expand Up @@ -2975,6 +2975,7 @@ static void alps_disconnect(struct psmouse *psmouse)

psmouse_reset(psmouse);
timer_shutdown_sync(&priv->timer);
disable_delayed_work_sync(&priv->dev3_register_work);
if (priv->dev2)
input_unregister_device(priv->dev2);
if (!IS_ERR_OR_NULL(priv->dev3))
Expand Down
7 changes: 7 additions & 0 deletions drivers/input/serio/i8042-acpipnpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -1169,6 +1169,13 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
},
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "X5KK45xS_X5SP45xS"),
},
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
},
/*
* A lot of modern Clevo barebones have touchpad and/or keyboard issues
* after suspend fixable with the forcenorestore quirk.
Expand Down
4 changes: 4 additions & 0 deletions drivers/input/touchscreen/apple_z2.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#define APPLE_Z2_TOUCH_STARTED 3
#define APPLE_Z2_TOUCH_MOVED 4
#define APPLE_Z2_CMD_READ_INTERRUPT_DATA 0xEB
#define APPLE_Z2_REPLY_INTERRUPT_DATA 0xE1
#define APPLE_Z2_HBPP_CMD_BLOB 0x3001
#define APPLE_Z2_FW_MAGIC 0x5746325A
#define LOAD_COMMAND_INIT_PAYLOAD 0
Expand Down Expand Up @@ -142,6 +143,9 @@ static int apple_z2_read_packet(struct apple_z2 *z2)
if (error)
return error;

if (z2->rx_buf[0] != APPLE_Z2_REPLY_INTERRUPT_DATA)
return 0;

pkt_len = (get_unaligned_le16(z2->rx_buf + 1) + 8) & 0xfffffffc;

error = spi_read(z2->spidev, z2->rx_buf, pkt_len);
Expand Down
2 changes: 1 addition & 1 deletion drivers/input/touchscreen/ti_am335x_tsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ static int titsc_config_wires(struct titsc *ts_dev)
wire_order[i] = ts_dev->config_inp[i] & 0x0F;
if (WARN_ON(analog_line[i] > 7))
return -EINVAL;
if (WARN_ON(wire_order[i] > ARRAY_SIZE(config_pins)))
if (WARN_ON(wire_order[i] >= ARRAY_SIZE(config_pins)))
return -EINVAL;
}

Expand Down
19 changes: 19 additions & 0 deletions include/linux/bpf.h
Original file line number Diff line number Diff line change
Expand Up @@ -3843,4 +3843,23 @@ static inline int bpf_map_check_op_flags(struct bpf_map *map, u64 flags, u64 all
return 0;
}

struct bpf_parser_buf {
char *buf;
int size;
};

struct bpf_parser_context;
typedef int (*bpf_parser_handler_t)(struct bpf_parser_context *ctx);

struct bpf_parser_context {
struct kref ref;
struct hlist_node hash_node;
bpf_parser_handler_t func;
struct bpf_parser_buf *buf;
void *data;
};

struct bpf_parser_context *alloc_bpf_parser_context(bpf_parser_handler_t func,
void *data);
void put_bpf_parser_context(struct bpf_parser_context *ctx);
#endif /* _LINUX_BPF_H */
8 changes: 8 additions & 0 deletions include/linux/decompress/mm.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ MALLOC_VISIBLE void free(void *where)
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <generated/autoconf.h>

/* Use defines rather than static inline in order to avoid spurious
* warnings when not needed (indeed large_malloc / large_free are not
Expand All @@ -92,7 +93,14 @@ MALLOC_VISIBLE void free(void *where)
#define large_malloc(a) vmalloc(a)
#define large_free(a) vfree(a)

#ifdef CONFIG_KEEP_DECOMPRESSOR
#define INIT
#define INITCONST
#else
#define INIT __init
#define INITCONST __initconst
#endif

#define STATIC

#include <linux/init.h>
Expand Down
9 changes: 9 additions & 0 deletions include/uapi/linux/input-event-codes.h
Original file line number Diff line number Diff line change
Expand Up @@ -891,6 +891,7 @@

#define ABS_VOLUME 0x20
#define ABS_PROFILE 0x21
#define ABS_SND_PROFILE 0x22

#define ABS_MISC 0x28

Expand Down Expand Up @@ -1000,4 +1001,12 @@
#define SND_MAX 0x07
#define SND_CNT (SND_MAX+1)

/*
* ABS_SND_PROFILE values
*/

#define SND_PROFILE_SILENT 0x00
#define SND_PROFILE_VIBRATE 0x01
#define SND_PROFILE_RING 0x02

#endif
8 changes: 8 additions & 0 deletions kernel/Kconfig.kexec
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ config KEXEC_FILE
for kernel and initramfs as opposed to list of segments as
accepted by kexec system call.

config KEXEC_BPF
bool "Enable bpf-prog to parse the kexec image"
depends on KEXEC_FILE
depends on DEBUG_INFO_BTF && BPF_SYSCALL && KEEP_DECOMPRESSOR
help
This is a feature to run bpf section inside a kexec image file, which
parses the image properly and help kernel set up kexec boot protocol

config KEXEC_SIG
bool "Verify kernel signature during kexec_file_load() syscall"
depends on ARCH_SUPPORTS_KEXEC_SIG
Expand Down
2 changes: 2 additions & 0 deletions kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ obj-$(CONFIG_CRASH_DUMP_KUNIT_TEST) += crash_core_test.o
obj-$(CONFIG_KEXEC) += kexec.o
obj-$(CONFIG_KEXEC_FILE) += kexec_file.o
obj-$(CONFIG_KEXEC_ELF) += kexec_elf.o
obj-$(CONFIG_KEXEC_BPF) += kexec_bpf_loader.o kexec_uefi_app.o
obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o
obj-$(CONFIG_COMPAT) += compat.o
obj-$(CONFIG_CGROUPS) += cgroup/
Expand Down Expand Up @@ -142,6 +143,7 @@ obj-$(CONFIG_SYSCTL_KUNIT_TEST) += sysctl-test.o

CFLAGS_kstack_erase.o += $(DISABLE_KSTACK_ERASE)
CFLAGS_kstack_erase.o += $(call cc-option,-mgeneral-regs-only)
CFLAGS_kexec_bpf_loader.o += -I$(srctree)/tools/lib
obj-$(CONFIG_KSTACK_ERASE) += kstack_erase.o
KASAN_SANITIZE_kstack_erase.o := n
KCSAN_SANITIZE_kstack_erase.o := n
Expand Down
3 changes: 3 additions & 0 deletions kernel/bpf/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ obj-$(CONFIG_BPF_SYSCALL) += kmem_cache_iter.o
ifeq ($(CONFIG_DMA_SHARED_BUFFER),y)
obj-$(CONFIG_BPF_SYSCALL) += dmabuf_iter.o
endif
ifeq ($(CONFIG_KEXEC_BPF),y)
obj-$(CONFIG_BPF_SYSCALL) += bpf_buffer_parser.o
endif

CFLAGS_REMOVE_percpu_freelist.o = $(CC_FLAGS_FTRACE)
CFLAGS_REMOVE_bpf_lru_list.o = $(CC_FLAGS_FTRACE)
Expand Down
Loading