Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
73eff24
scsi: qla2xxx: Fix bsg_done() causing double free
Dec 10, 2025
4a3dd63
PCI: endpoint: Remove unused field in struct pci_epf_group
tititiou36 Feb 14, 2026
5b05441
PCI: endpoint: Avoid creating sub-groups asynchronously
Feb 14, 2026
b123598
bus: fsl-mc: Replace snprintf and sprintf with sysfs_emit in sysfs sh…
ChelsyRatnawat Feb 13, 2026
af04def
bus: fsl-mc: fix use-after-free in driver_override_show()
2045gemini Feb 13, 2026
5b52929
ALSA: hda/realtek: Fix headset mic for TongFang X6AR55xU
Jan 19, 2026
0bf762d
ASoC: amd: yc: Add ASUS ExpertBook PM1503CDA to quirks list
AnatolyShirykalov Jan 19, 2026
968efd1
gpio: sprd: Change sprd_gpio lock to raw_spin_lock
Jan 26, 2026
4662706
ALSA: hda/realtek: Add quirk for Inspur S14-G1
Jan 26, 2026
03a8e65
ASoC: cs35l45: Corrects ASP_TX5 DAPM widget channel
rriveramcrus Jan 15, 2026
49f6aec
romfs: check sb_set_blocksize() return value
deepanshu406 Jan 13, 2026
002f861
drm/tegra: hdmi: sor: Fix error: variable ‘j’ set but not used
listout Sep 1, 2025
b0d05dd
platform/x86: classmate-laptop: Add missing NULL pointer checks
rafaeljw Jan 26, 2026
f083936
ASoC: Intel: sof_es8336: Add DMI quirk for Huawei BOD-WXX9
Tydik42 Feb 1, 2026
7c5e855
ASoC: amd: yc: Add quirk for HP 200 G2a 16
xanthein Jan 29, 2026
faddc9a
platform/x86/amd/pmc: Add quirk for MECHREVO Wujie 15X Pro
Gong-Mi Jan 22, 2026
0d6768b
platform/x86: panasonic-laptop: Fix sysfs group leak in error path
rafaeljw Jan 20, 2026
c7e97ad
ASoC: cs42l43: Correct handling of 3-pole jack load detection
charleskeepax Jan 30, 2026
7ca302e
ASoC: fsl_xcvr: fix missing lock in fsl_xcvr_mode_put()
haruki3hhh Feb 2, 2026
0b56f3c
gpiolib: acpi: Fix gpio count with string references
Jan 29, 2026
bfc61db
LoongArch: Add WriteCombine shadow mapping in KASAN
Nov 12, 2024
0d6ca87
LoongArch: Rework KASAN initialization for PTW-enabled systems
seehearfeel Feb 10, 2026
5dce175
Revert "wireguard: device: enable threaded NAPI"
borkmann Feb 16, 2026
a74d664
mm/hugetlb: fix copy_hugetlb_page_range() to use ->pt_share_count
jchu314atgithub Sep 16, 2025
a9c3740
mm/hugetlb: fix hugetlb_pmd_shared()
davidhildenbrand Dec 23, 2025
7aa7572
mm/hugetlb: fix two comments related to huge_pmd_unshare()
davidhildenbrand Dec 23, 2025
915f54a
mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables us…
davidhildenbrand Dec 23, 2025
4b52055
cpuset: Fix missing adaptation for cpuset_is_populated
Jan 14, 2026
756f947
fbdev: rivafb: fix divide error in nv3_arb()
lgs2513 Dec 7, 2025
cad1921
fbdev: smscufx: properly copy ioctl memory to kernelspace
gregkh Dec 28, 2025
eac954c
f2fs: fix to add gc count stat in f2fs_gc_range
Zhiguo-unisoc Dec 26, 2025
55c8b9f
f2fs: fix out-of-bounds access in sysfs attribute read/write
Jan 7, 2026
4dd6e5b
f2fs: fix IS_CHECKPOINTED flag inconsistency issue caused by concurre…
Feb 17, 2026
1aa4a0c
f2fs: fix to avoid UAF in f2fs_write_end_io()
chaseyu Feb 17, 2026
2baa0e4
f2fs: fix zoned block device information initialization
WenjieQiHUST Feb 17, 2026
bfa0d61
f2fs: fix to avoid mapping wrong physical block for swapfile
chaseyu Feb 17, 2026
51f882a
USB: serial: option: add Telit FN920C04 RNDIS compositions
fabio-porcedda Jan 23, 2026
6c54870
net: tunnel: make skb_vlan_inet_prepare() return drop reasons
image-dragon Oct 9, 2024
c9c3d27
Linux 6.6.127
gregkh Feb 19, 2026
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
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 6
PATCHLEVEL = 6
SUBLEVEL = 126
SUBLEVEL = 127
EXTRAVERSION =
NAME = Pinguïn Aangedreven

Expand Down
11 changes: 10 additions & 1 deletion arch/loongarch/include/asm/kasan.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
/* 64-bit segment value. */
#define XKPRANGE_UC_SEG (0x8000)
#define XKPRANGE_CC_SEG (0x9000)
#define XKPRANGE_WC_SEG (0xa000)
#define XKVRANGE_VC_SEG (0xffff)

/* Cached */
Expand All @@ -41,10 +42,17 @@
#define XKPRANGE_UC_SHADOW_SIZE (XKPRANGE_UC_SIZE >> KASAN_SHADOW_SCALE_SHIFT)
#define XKPRANGE_UC_SHADOW_END (XKPRANGE_UC_KASAN_OFFSET + XKPRANGE_UC_SHADOW_SIZE)

/* WriteCombine */
#define XKPRANGE_WC_START WRITECOMBINE_BASE
#define XKPRANGE_WC_SIZE XRANGE_SIZE
#define XKPRANGE_WC_KASAN_OFFSET XKPRANGE_UC_SHADOW_END
#define XKPRANGE_WC_SHADOW_SIZE (XKPRANGE_WC_SIZE >> KASAN_SHADOW_SCALE_SHIFT)
#define XKPRANGE_WC_SHADOW_END (XKPRANGE_WC_KASAN_OFFSET + XKPRANGE_WC_SHADOW_SIZE)

/* VMALLOC (Cached or UnCached) */
#define XKVRANGE_VC_START MODULES_VADDR
#define XKVRANGE_VC_SIZE round_up(KFENCE_AREA_END - MODULES_VADDR + 1, PGDIR_SIZE)
#define XKVRANGE_VC_KASAN_OFFSET XKPRANGE_UC_SHADOW_END
#define XKVRANGE_VC_KASAN_OFFSET XKPRANGE_WC_SHADOW_END
#define XKVRANGE_VC_SHADOW_SIZE (XKVRANGE_VC_SIZE >> KASAN_SHADOW_SCALE_SHIFT)
#define XKVRANGE_VC_SHADOW_END (XKVRANGE_VC_KASAN_OFFSET + XKVRANGE_VC_SHADOW_SIZE)

Expand All @@ -55,6 +63,7 @@

#define XKPRANGE_CC_SHADOW_OFFSET (KASAN_SHADOW_START + XKPRANGE_CC_KASAN_OFFSET)
#define XKPRANGE_UC_SHADOW_OFFSET (KASAN_SHADOW_START + XKPRANGE_UC_KASAN_OFFSET)
#define XKPRANGE_WC_SHADOW_OFFSET (KASAN_SHADOW_START + XKPRANGE_WC_KASAN_OFFSET)
#define XKVRANGE_VC_SHADOW_OFFSET (KASAN_SHADOW_START + XKVRANGE_VC_KASAN_OFFSET)

extern bool kasan_early_stage;
Expand Down
76 changes: 42 additions & 34 deletions arch/loongarch/mm/kasan_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,36 +42,43 @@ static pgd_t kasan_pg_dir[PTRS_PER_PGD] __initdata __aligned(PAGE_SIZE);

bool kasan_early_stage = true;

void *kasan_mem_to_shadow(const void *addr)
static void *mem_to_shadow(const void *addr)
{
if (!kasan_arch_is_ready()) {
unsigned long offset = 0;
unsigned long maddr = (unsigned long)addr;
unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff;

if (maddr >= FIXADDR_START)
return (void *)(kasan_early_shadow_page);
} else {
unsigned long maddr = (unsigned long)addr;
unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff;
unsigned long offset = 0;

if (maddr >= FIXADDR_START)
return (void *)(kasan_early_shadow_page);

maddr &= XRANGE_SHADOW_MASK;
switch (xrange) {
case XKPRANGE_CC_SEG:
offset = XKPRANGE_CC_SHADOW_OFFSET;
break;
case XKPRANGE_UC_SEG:
offset = XKPRANGE_UC_SHADOW_OFFSET;
break;
case XKVRANGE_VC_SEG:
offset = XKVRANGE_VC_SHADOW_OFFSET;
break;
default:
WARN_ON(1);
return NULL;
}

return (void *)((maddr >> KASAN_SHADOW_SCALE_SHIFT) + offset);
maddr &= XRANGE_SHADOW_MASK;
switch (xrange) {
case XKPRANGE_CC_SEG:
offset = XKPRANGE_CC_SHADOW_OFFSET;
break;
case XKPRANGE_UC_SEG:
offset = XKPRANGE_UC_SHADOW_OFFSET;
break;
case XKPRANGE_WC_SEG:
offset = XKPRANGE_WC_SHADOW_OFFSET;
break;
case XKVRANGE_VC_SEG:
offset = XKVRANGE_VC_SHADOW_OFFSET;
break;
default:
WARN_ON(1);
return NULL;
}

return (void *)((maddr >> KASAN_SHADOW_SCALE_SHIFT) + offset);
}

void *kasan_mem_to_shadow(const void *addr)
{
if (kasan_arch_is_ready())
return mem_to_shadow(addr);
else
return (void *)(kasan_early_shadow_page);
}

const void *kasan_shadow_to_mem(const void *shadow_addr)
Expand All @@ -86,6 +93,8 @@ const void *kasan_shadow_to_mem(const void *shadow_addr)

if (addr >= XKVRANGE_VC_SHADOW_OFFSET)
return (void *)(((addr - XKVRANGE_VC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKVRANGE_VC_START);
else if (addr >= XKPRANGE_WC_SHADOW_OFFSET)
return (void *)(((addr - XKPRANGE_WC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKPRANGE_WC_START);
else if (addr >= XKPRANGE_UC_SHADOW_OFFSET)
return (void *)(((addr - XKPRANGE_UC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKPRANGE_UC_START);
else if (addr >= XKPRANGE_CC_SHADOW_OFFSET)
Expand Down Expand Up @@ -290,10 +299,8 @@ void __init kasan_init(void)
/* Maps everything to a single page of zeroes */
kasan_pgd_populate(KASAN_SHADOW_START, KASAN_SHADOW_END, NUMA_NO_NODE, true);

kasan_populate_early_shadow(kasan_mem_to_shadow((void *)VMALLOC_START),
kasan_mem_to_shadow((void *)KFENCE_AREA_END));

kasan_early_stage = false;
kasan_populate_early_shadow(mem_to_shadow((void *)VMALLOC_START),
mem_to_shadow((void *)KFENCE_AREA_END));

/* Populate the linear mapping */
for_each_mem_range(i, &pa_start, &pa_end) {
Expand All @@ -303,13 +310,13 @@ void __init kasan_init(void)
if (start >= end)
break;

kasan_map_populate((unsigned long)kasan_mem_to_shadow(start),
(unsigned long)kasan_mem_to_shadow(end), NUMA_NO_NODE);
kasan_map_populate((unsigned long)mem_to_shadow(start),
(unsigned long)mem_to_shadow(end), NUMA_NO_NODE);
}

/* Populate modules mapping */
kasan_map_populate((unsigned long)kasan_mem_to_shadow((void *)MODULES_VADDR),
(unsigned long)kasan_mem_to_shadow((void *)MODULES_END), NUMA_NO_NODE);
kasan_map_populate((unsigned long)mem_to_shadow((void *)MODULES_VADDR),
(unsigned long)mem_to_shadow((void *)MODULES_END), NUMA_NO_NODE);
/*
* KAsan may reuse the contents of kasan_early_shadow_pte directly, so we
* should make sure that it maps the zero page read-only.
Expand All @@ -324,5 +331,6 @@ void __init kasan_init(void)

/* At this point kasan is fully initialized. Enable error messages */
init_task.kasan_depth = 0;
kasan_early_stage = false;
pr_info("KernelAddressSanitizer initialized.\n");
}
10 changes: 7 additions & 3 deletions drivers/bus/fsl-mc/fsl-mc-bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
{
struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);

return sprintf(buf, "fsl-mc:v%08Xd%s\n", mc_dev->obj_desc.vendor,
mc_dev->obj_desc.type);
return sysfs_emit(buf, "fsl-mc:v%08Xd%s\n", mc_dev->obj_desc.vendor,
mc_dev->obj_desc.type);
}
static DEVICE_ATTR_RO(modalias);

Expand All @@ -201,8 +201,12 @@ static ssize_t driver_override_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct fsl_mc_device *mc_dev = to_fsl_mc_device(dev);
ssize_t len;

return snprintf(buf, PAGE_SIZE, "%s\n", mc_dev->driver_override);
device_lock(dev);
len = sysfs_emit(buf, "%s\n", mc_dev->driver_override);
device_unlock(dev);
return len;
}
static DEVICE_ATTR_RW(driver_override);

Expand Down
8 changes: 4 additions & 4 deletions drivers/gpio/gpio-sprd.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
struct sprd_gpio {
struct gpio_chip chip;
void __iomem *base;
spinlock_t lock;
raw_spinlock_t lock;
int irq;
};

Expand All @@ -54,7 +54,7 @@ static void sprd_gpio_update(struct gpio_chip *chip, unsigned int offset,
unsigned long flags;
u32 tmp;

spin_lock_irqsave(&sprd_gpio->lock, flags);
raw_spin_lock_irqsave(&sprd_gpio->lock, flags);
tmp = readl_relaxed(base + reg);

if (val)
Expand All @@ -63,7 +63,7 @@ static void sprd_gpio_update(struct gpio_chip *chip, unsigned int offset,
tmp &= ~BIT(SPRD_GPIO_BIT(offset));

writel_relaxed(tmp, base + reg);
spin_unlock_irqrestore(&sprd_gpio->lock, flags);
raw_spin_unlock_irqrestore(&sprd_gpio->lock, flags);
}

static int sprd_gpio_read(struct gpio_chip *chip, unsigned int offset, u16 reg)
Expand Down Expand Up @@ -234,7 +234,7 @@ static int sprd_gpio_probe(struct platform_device *pdev)
if (IS_ERR(sprd_gpio->base))
return PTR_ERR(sprd_gpio->base);

spin_lock_init(&sprd_gpio->lock);
raw_spin_lock_init(&sprd_gpio->lock);

sprd_gpio->chip.label = dev_name(&pdev->dev);
sprd_gpio->chip.ngpio = SPRD_GPIO_NR;
Expand Down
1 change: 1 addition & 0 deletions drivers/gpio/gpiolib-acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1417,6 +1417,7 @@ static int acpi_gpio_package_count(const union acpi_object *obj)
while (element < end) {
switch (element->type) {
case ACPI_TYPE_LOCAL_REFERENCE:
case ACPI_TYPE_STRING:
element += 3;
fallthrough;
case ACPI_TYPE_INTEGER:
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/drm/tegra/hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ static void tegra_hdmi_write_infopack(struct tegra_hdmi *hdmi, const void *data,
{
const u8 *ptr = data;
unsigned long offset;
size_t i, j;
size_t i;
u32 value;

switch (ptr[0]) {
Expand Down Expand Up @@ -689,7 +689,7 @@ static void tegra_hdmi_write_infopack(struct tegra_hdmi *hdmi, const void *data,
* - subpack_low: bytes 0 - 3
* - subpack_high: bytes 4 - 6 (with byte 7 padded to 0x00)
*/
for (i = 3, j = 0; i < size; i += 7, j += 8) {
for (i = 3; i < size; i += 7) {
size_t rem = size - i, num = min_t(size_t, rem, 4);

value = tegra_hdmi_subpack(&ptr[i], num);
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/drm/tegra/sor.c
Original file line number Diff line number Diff line change
Expand Up @@ -1861,7 +1861,7 @@ static void tegra_sor_hdmi_write_infopack(struct tegra_sor *sor,
{
const u8 *ptr = data;
unsigned long offset;
size_t i, j;
size_t i;
u32 value;

switch (ptr[0]) {
Expand Down Expand Up @@ -1894,7 +1894,7 @@ static void tegra_sor_hdmi_write_infopack(struct tegra_sor *sor,
* - subpack_low: bytes 0 - 3
* - subpack_high: bytes 4 - 6 (with byte 7 padded to 0x00)
*/
for (i = 3, j = 0; i < size; i += 7, j += 8) {
for (i = 3; i < size; i += 7) {
size_t rem = size - i, num = min_t(size_t, rem, 4);

value = tegra_sor_hdmi_subpack(&ptr[i], num);
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/bareudp.c
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ static int bareudp_xmit_skb(struct sk_buff *skb, struct net_device *dev,
__be32 saddr;
int err;

if (!skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB)))
if (skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB)))
return -EINVAL;

if (!sock)
Expand Down Expand Up @@ -385,7 +385,7 @@ static int bareudp6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
__be16 sport;
int err;

if (!skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB)))
if (skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB)))
return -EINVAL;

if (!sock)
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/geneve.c
Original file line number Diff line number Diff line change
Expand Up @@ -927,7 +927,7 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,
__be16 sport;
int err;

if (!skb_vlan_inet_prepare(skb, inner_proto_inherit))
if (skb_vlan_inet_prepare(skb, inner_proto_inherit))
return -EINVAL;

sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
Expand Down Expand Up @@ -1026,7 +1026,7 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
__be16 sport;
int err;

if (!skb_vlan_inet_prepare(skb, inner_proto_inherit))
if (skb_vlan_inet_prepare(skb, inner_proto_inherit))
return -EINVAL;

sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
Expand Down
1 change: 0 additions & 1 deletion drivers/net/wireguard/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,6 @@ static int wg_newlink(struct net *src_net, struct net_device *dev,
if (ret < 0)
goto err_free_handshake_queue;

dev_set_threaded(dev, true);
ret = register_netdevice(dev);
if (ret < 0)
goto err_uninit_ratelimiter;
Expand Down
16 changes: 5 additions & 11 deletions drivers/pci/endpoint/pci-ep-cfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ struct pci_epf_group {
struct config_group group;
struct config_group primary_epc_group;
struct config_group secondary_epc_group;
struct config_group *type_group;
struct delayed_work cfs_work;
struct pci_epf *epf;
int index;
};
Expand Down Expand Up @@ -101,7 +99,7 @@ static struct config_group
secondary_epc_group = &epf_group->secondary_epc_group;
config_group_init_type_name(secondary_epc_group, "secondary",
&pci_secondary_epc_type);
configfs_register_group(&epf_group->group, secondary_epc_group);
configfs_add_default_group(secondary_epc_group, &epf_group->group);

return secondary_epc_group;
}
Expand Down Expand Up @@ -161,7 +159,7 @@ static struct config_group

config_group_init_type_name(primary_epc_group, "primary",
&pci_primary_epc_type);
configfs_register_group(&epf_group->group, primary_epc_group);
configfs_add_default_group(primary_epc_group, &epf_group->group);

return primary_epc_group;
}
Expand Down Expand Up @@ -562,15 +560,13 @@ static void pci_ep_cfs_add_type_group(struct pci_epf_group *epf_group)
return;
}

configfs_register_group(&epf_group->group, group);
configfs_add_default_group(group, &epf_group->group);
}

static void pci_epf_cfs_work(struct work_struct *work)
static void pci_epf_cfs_add_sub_groups(struct pci_epf_group *epf_group)
{
struct pci_epf_group *epf_group;
struct config_group *group;

epf_group = container_of(work, struct pci_epf_group, cfs_work.work);
group = pci_ep_cfs_add_primary_group(epf_group);
if (IS_ERR(group)) {
pr_err("failed to create 'primary' EPC interface\n");
Expand Down Expand Up @@ -629,9 +625,7 @@ static struct config_group *pci_epf_make(struct config_group *group,

kfree(epf_name);

INIT_DELAYED_WORK(&epf_group->cfs_work, pci_epf_cfs_work);
queue_delayed_work(system_wq, &epf_group->cfs_work,
msecs_to_jiffies(1));
pci_epf_cfs_add_sub_groups(epf_group);

return &epf_group->group;

Expand Down
7 changes: 7 additions & 0 deletions drivers/platform/x86/amd/pmc/pmc-quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,13 @@ static const struct dmi_system_id fwbug_list[] = {
DMI_MATCH(DMI_BOARD_NAME, "XxKK4NAx_XxSP4NAx"),
}
},
{
.ident = "MECHREVO Wujie 15X Pro",
.driver_data = &quirk_spurious_8042,
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "WUJIE Series-X5SP4NAG"),
}
},
{}
};

Expand Down
Loading