mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
Merge 6.1.10 into android14-6.1
Changes in 6.1.10 ARM: dts: imx: Fix pca9547 i2c-mux node name ARM: dts: vf610: Fix pca9548 i2c-mux node names arm64: dts: freescale: Fix pca954x i2c-mux node names arm64: dts: imx8mq-thor96: fix no-mmc property for SDHCI firmware: arm_scmi: Clear stale xfer->hdr.status bpf: Skip task with pid=1 in send_signal_common() erofs/zmap.c: Fix incorrect offset calculation mac80211: Fix MLO address translation for multiple bss case arm64: dts: msm8994-angler: fix the memory map ARM: omap1: fix building gpio15xx kselftest: Fix error message for unconfigured LLVM builds erofs: clean up parsing of fscache related options blk-cgroup: fix missing pd_online_fn() while activating policy LoongArch: Get frame info in unwind_start() when regs is not available ACPI: video: Add backlight=native DMI quirk for Acer Aspire 4810T block: fix hctx checks for batch allocation s390: workaround invalid gcc-11 out of bounds read warning HID: uclogic: Add support for XP-PEN Deco 01 V2 HID: playstation: sanity check DualSense calibration data. dmaengine: imx-sdma: Fix a possible memory leak in sdma_transfer_init gpiolib: acpi: Allow ignoring wake capability on pins that aren't in _AEI cifs: fix return of uninitialized rc in dfs_cache_update_tgthint() nvme-apple: only reset the controller when RTKit is running gpiolib: acpi: Add a ignore wakeup quirk for Clevo NL5xRU gpiolib-acpi: Don't set GPIOs for wakeup in S3 mode net: fix NULL pointer in skb_segment_list rust: print: avoid evaluating arguments in `pr_*` macros in `unsafe` blocks net: mctp: purge receive queues on sk destruction Linux 6.1.10 Change-Id: I38cb1a3d3f619094d9a248c59bccbe4a56c6d70e Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 9
|
||||
SUBLEVEL = 10
|
||||
EXTRAVERSION =
|
||||
NAME = Hurr durr I'ma ninja sloth
|
||||
|
||||
|
||||
@@ -488,7 +488,7 @@
|
||||
scl-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
|
||||
i2c-switch@70 {
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9547";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
tca9548@70 {
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9548";
|
||||
pinctrl-0 = <&pinctrl_i2c_mux_reset>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
tca9548@70 {
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9548";
|
||||
pinctrl-0 = <&pinctrl_i2c_mux_reset>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/platform_data/gpio-omap.h>
|
||||
#include <linux/soc/ti/omap1-soc.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include "irqs.h"
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
pca9547@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x77>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
pca9547@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x77>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
pca9547@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x77>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
i2c-switch@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x77>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
i2c-switch@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x77>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
|
||||
i2c-switch@70 {
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9540";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
pca9547@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x77>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
pca9547@75 {
|
||||
i2c-mux@75 {
|
||||
compatible = "nxp,pca9547";
|
||||
reg = <0x75>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
i2c-switch@77 {
|
||||
i2c-mux@77 {
|
||||
compatible = "nxp,pca9547";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
pinctrl-0 = <&pinctrl_i2c3>;
|
||||
status = "okay";
|
||||
|
||||
i2cmux@70 {
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9540";
|
||||
reg = <0x70>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
i2cmux@70 {
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9546";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1_pca9546>;
|
||||
@@ -216,7 +216,7 @@
|
||||
pinctrl-0 = <&pinctrl_i2c4>;
|
||||
status = "okay";
|
||||
|
||||
pca9546: i2cmux@70 {
|
||||
pca9546: i2c-mux@70 {
|
||||
compatible = "nxp,pca9546";
|
||||
reg = <0x70>;
|
||||
#address-cells = <1>;
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
bus-width = <4>;
|
||||
non-removable;
|
||||
no-sd;
|
||||
no-emmc;
|
||||
no-mmc;
|
||||
status = "okay";
|
||||
|
||||
brcmf: wifi@1 {
|
||||
@@ -359,7 +359,7 @@
|
||||
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||
bus-width = <4>;
|
||||
no-sdio;
|
||||
no-emmc;
|
||||
no-mmc;
|
||||
disable-wp;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
pinctrl-0 = <&pinctrl_lpi2c1 &pinctrl_ioexp_rst>;
|
||||
status = "okay";
|
||||
|
||||
i2c-switch@71 {
|
||||
i2c-mux@71 {
|
||||
compatible = "nxp,pca9646", "nxp,pca9546";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
@@ -8,9 +8,6 @@
|
||||
|
||||
#include "msm8994.dtsi"
|
||||
|
||||
/* Angler's firmware does not report where the memory is allocated */
|
||||
/delete-node/ &cont_splash_mem;
|
||||
|
||||
/ {
|
||||
model = "Huawei Nexus 6P";
|
||||
compatible = "huawei,angler", "qcom,msm8994";
|
||||
@@ -27,6 +24,22 @@
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
tzapp_mem: tzapp@4800000 {
|
||||
reg = <0 0x04800000 0 0x1900000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
removed_region: reserved@6300000 {
|
||||
reg = <0 0x06300000 0 0xD00000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp1_uart2 {
|
||||
|
||||
@@ -185,20 +185,14 @@ out:
|
||||
|
||||
unsigned long __get_wchan(struct task_struct *task)
|
||||
{
|
||||
unsigned long pc;
|
||||
unsigned long pc = 0;
|
||||
struct unwind_state state;
|
||||
|
||||
if (!try_get_task_stack(task))
|
||||
return 0;
|
||||
|
||||
unwind_start(&state, task, NULL);
|
||||
state.sp = thread_saved_fp(task);
|
||||
get_stack_info(state.sp, state.task, &state.stack_info);
|
||||
state.pc = thread_saved_ra(task);
|
||||
#ifdef CONFIG_UNWINDER_PROLOGUE
|
||||
state.type = UNWINDER_PROLOGUE;
|
||||
#endif
|
||||
for (; !unwind_done(&state); unwind_next_frame(&state)) {
|
||||
for (unwind_start(&state, task, NULL);
|
||||
!unwind_done(&state); unwind_next_frame(&state)) {
|
||||
pc = unwind_get_return_address(&state);
|
||||
if (!pc)
|
||||
break;
|
||||
|
||||
@@ -25,6 +25,12 @@ void unwind_start(struct unwind_state *state, struct task_struct *task,
|
||||
if (regs) {
|
||||
state->sp = regs->regs[3];
|
||||
state->pc = regs->csr_era;
|
||||
} else if (task && task != current) {
|
||||
state->sp = thread_saved_fp(task);
|
||||
state->pc = thread_saved_ra(task);
|
||||
} else {
|
||||
state->sp = (unsigned long)__builtin_frame_address(0);
|
||||
state->pc = (unsigned long)__builtin_return_address(0);
|
||||
}
|
||||
|
||||
state->task = task;
|
||||
|
||||
@@ -111,12 +111,22 @@ void unwind_start(struct unwind_state *state, struct task_struct *task,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
memset(state, 0, sizeof(*state));
|
||||
state->type = UNWINDER_PROLOGUE;
|
||||
|
||||
if (regs && __kernel_text_address(regs->csr_era)) {
|
||||
state->pc = regs->csr_era;
|
||||
if (regs) {
|
||||
state->sp = regs->regs[3];
|
||||
state->pc = regs->csr_era;
|
||||
state->ra = regs->regs[1];
|
||||
state->type = UNWINDER_PROLOGUE;
|
||||
if (!__kernel_text_address(state->pc))
|
||||
state->type = UNWINDER_GUESS;
|
||||
} else if (task && task != current) {
|
||||
state->sp = thread_saved_fp(task);
|
||||
state->pc = thread_saved_ra(task);
|
||||
state->ra = 0;
|
||||
} else {
|
||||
state->sp = (unsigned long)__builtin_frame_address(0);
|
||||
state->pc = (unsigned long)__builtin_return_address(0);
|
||||
state->ra = 0;
|
||||
}
|
||||
|
||||
state->task = task;
|
||||
|
||||
@@ -507,6 +507,7 @@ static void __init setup_lowcore_dat_on(void)
|
||||
{
|
||||
struct lowcore *abs_lc;
|
||||
unsigned long flags;
|
||||
int i;
|
||||
|
||||
__ctl_clear_bit(0, 28);
|
||||
S390_lowcore.external_new_psw.mask |= PSW_MASK_DAT;
|
||||
@@ -521,8 +522,8 @@ static void __init setup_lowcore_dat_on(void)
|
||||
abs_lc = get_abs_lowcore(&flags);
|
||||
abs_lc->restart_flags = RESTART_FLAG_CTLREGS;
|
||||
abs_lc->program_new_psw = S390_lowcore.program_new_psw;
|
||||
memcpy(abs_lc->cregs_save_area, S390_lowcore.cregs_save_area,
|
||||
sizeof(abs_lc->cregs_save_area));
|
||||
for (i = 0; i < 16; i++)
|
||||
abs_lc->cregs_save_area[i] = S390_lowcore.cregs_save_area[i];
|
||||
put_abs_lowcore(abs_lc, flags);
|
||||
}
|
||||
|
||||
|
||||
@@ -1408,6 +1408,10 @@ retry:
|
||||
list_for_each_entry_reverse(blkg, &q->blkg_list, q_node)
|
||||
pol->pd_init_fn(blkg->pd[pol->plid]);
|
||||
|
||||
if (pol->pd_online_fn)
|
||||
list_for_each_entry_reverse(blkg, &q->blkg_list, q_node)
|
||||
pol->pd_online_fn(blkg->pd[pol->plid]);
|
||||
|
||||
__set_bit(pol->plid, q->blkcg_pols);
|
||||
ret = 0;
|
||||
|
||||
|
||||
@@ -2858,6 +2858,7 @@ static inline struct request *blk_mq_get_cached_request(struct request_queue *q,
|
||||
struct blk_plug *plug, struct bio **bio, unsigned int nsegs)
|
||||
{
|
||||
struct request *rq;
|
||||
enum hctx_type type, hctx_type;
|
||||
|
||||
if (!plug)
|
||||
return NULL;
|
||||
@@ -2870,7 +2871,10 @@ static inline struct request *blk_mq_get_cached_request(struct request_queue *q,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (blk_mq_get_hctx_type((*bio)->bi_opf) != rq->mq_hctx->type)
|
||||
type = blk_mq_get_hctx_type((*bio)->bi_opf);
|
||||
hctx_type = rq->mq_hctx->type;
|
||||
if (type != hctx_type &&
|
||||
!(type == HCTX_TYPE_READ && hctx_type == HCTX_TYPE_DEFAULT))
|
||||
return NULL;
|
||||
if (op_is_flush(rq->cmd_flags) != op_is_flush((*bio)->bi_opf))
|
||||
return NULL;
|
||||
|
||||
@@ -493,6 +493,14 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Precision 7510"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = video_detect_force_native,
|
||||
/* Acer Aspire 4810T */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 4810T"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = video_detect_force_native,
|
||||
/* Acer Aspire 5738z */
|
||||
|
||||
@@ -1521,10 +1521,12 @@ static struct sdma_desc *sdma_transfer_init(struct sdma_channel *sdmac,
|
||||
sdma_config_ownership(sdmac, false, true, false);
|
||||
|
||||
if (sdma_load_context(sdmac))
|
||||
goto err_desc_out;
|
||||
goto err_bd_out;
|
||||
|
||||
return desc;
|
||||
|
||||
err_bd_out:
|
||||
sdma_free_bd(desc);
|
||||
err_desc_out:
|
||||
kfree(desc);
|
||||
err_out:
|
||||
|
||||
@@ -910,6 +910,8 @@ static int do_xfer(const struct scmi_protocol_handle *ph,
|
||||
xfer->hdr.protocol_id, xfer->hdr.seq,
|
||||
xfer->hdr.poll_completion);
|
||||
|
||||
/* Clear any stale status */
|
||||
xfer->hdr.status = SCMI_SUCCESS;
|
||||
xfer->state = SCMI_XFER_SENT_OK;
|
||||
/*
|
||||
* Even though spinlocking is not needed here since no race is possible
|
||||
|
||||
@@ -361,7 +361,7 @@ err:
|
||||
}
|
||||
|
||||
static bool acpi_gpio_irq_is_wake(struct device *parent,
|
||||
struct acpi_resource_gpio *agpio)
|
||||
const struct acpi_resource_gpio *agpio)
|
||||
{
|
||||
unsigned int pin = agpio->pin_table[0];
|
||||
|
||||
@@ -754,7 +754,7 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)
|
||||
lookup->info.pin_config = agpio->pin_config;
|
||||
lookup->info.debounce = agpio->debounce_timeout;
|
||||
lookup->info.gpioint = gpioint;
|
||||
lookup->info.wake_capable = agpio->wake_capable == ACPI_WAKE_CAPABLE;
|
||||
lookup->info.wake_capable = acpi_gpio_irq_is_wake(&lookup->info.adev->dev, agpio);
|
||||
|
||||
/*
|
||||
* Polarity and triggering are only specified for GpioInt
|
||||
@@ -1080,7 +1080,8 @@ int acpi_dev_gpio_irq_wake_get_by(struct acpi_device *adev, const char *name, in
|
||||
dev_dbg(&adev->dev, "IRQ %d already in use\n", irq);
|
||||
}
|
||||
|
||||
if (wake_capable)
|
||||
/* avoid suspend issues with GPIOs when systems are using S3 */
|
||||
if (wake_capable && acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0)
|
||||
*wake_capable = info.wake_capable;
|
||||
|
||||
return irq;
|
||||
@@ -1599,6 +1600,19 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = {
|
||||
.ignore_interrupt = "AMDI0030:00@18",
|
||||
},
|
||||
},
|
||||
{
|
||||
/*
|
||||
* Spurious wakeups from TP_ATTN# pin
|
||||
* Found in BIOS 1.7.8
|
||||
* https://gitlab.freedesktop.org/drm/amd/-/issues/1722#note_1720627
|
||||
*/
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
|
||||
},
|
||||
.driver_data = &(struct acpi_gpiolib_dmi_quirk) {
|
||||
.ignore_wake = "ELAN0415:00@9",
|
||||
},
|
||||
},
|
||||
{} /* Terminating entry */
|
||||
};
|
||||
|
||||
|
||||
@@ -1294,6 +1294,7 @@
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_G540 0x0075
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_G640 0x0094
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO01 0x0042
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO01_V2 0x0905
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO_L 0x0935
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO_PRO_S 0x0909
|
||||
#define USB_DEVICE_ID_UGEE_XPPEN_TABLET_STAR06 0x0078
|
||||
|
||||
@@ -712,6 +712,7 @@ ATTRIBUTE_GROUPS(ps_device);
|
||||
|
||||
static int dualsense_get_calibration_data(struct dualsense *ds)
|
||||
{
|
||||
struct hid_device *hdev = ds->base.hdev;
|
||||
short gyro_pitch_bias, gyro_pitch_plus, gyro_pitch_minus;
|
||||
short gyro_yaw_bias, gyro_yaw_plus, gyro_yaw_minus;
|
||||
short gyro_roll_bias, gyro_roll_plus, gyro_roll_minus;
|
||||
@@ -722,6 +723,7 @@ static int dualsense_get_calibration_data(struct dualsense *ds)
|
||||
int speed_2x;
|
||||
int range_2g;
|
||||
int ret = 0;
|
||||
int i;
|
||||
uint8_t *buf;
|
||||
|
||||
buf = kzalloc(DS_FEATURE_REPORT_CALIBRATION_SIZE, GFP_KERNEL);
|
||||
@@ -773,6 +775,21 @@ static int dualsense_get_calibration_data(struct dualsense *ds)
|
||||
ds->gyro_calib_data[2].sens_numer = speed_2x*DS_GYRO_RES_PER_DEG_S;
|
||||
ds->gyro_calib_data[2].sens_denom = gyro_roll_plus - gyro_roll_minus;
|
||||
|
||||
/*
|
||||
* Sanity check gyro calibration data. This is needed to prevent crashes
|
||||
* during report handling of virtual, clone or broken devices not implementing
|
||||
* calibration data properly.
|
||||
*/
|
||||
for (i = 0; i < ARRAY_SIZE(ds->gyro_calib_data); i++) {
|
||||
if (ds->gyro_calib_data[i].sens_denom == 0) {
|
||||
hid_warn(hdev, "Invalid gyro calibration data for axis (%d), disabling calibration.",
|
||||
ds->gyro_calib_data[i].abs_code);
|
||||
ds->gyro_calib_data[i].bias = 0;
|
||||
ds->gyro_calib_data[i].sens_numer = DS_GYRO_RANGE;
|
||||
ds->gyro_calib_data[i].sens_denom = S16_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Set accelerometer calibration and normalization parameters.
|
||||
* Data values will be normalized to 1/DS_ACC_RES_PER_G g.
|
||||
@@ -795,6 +812,21 @@ static int dualsense_get_calibration_data(struct dualsense *ds)
|
||||
ds->accel_calib_data[2].sens_numer = 2*DS_ACC_RES_PER_G;
|
||||
ds->accel_calib_data[2].sens_denom = range_2g;
|
||||
|
||||
/*
|
||||
* Sanity check accelerometer calibration data. This is needed to prevent crashes
|
||||
* during report handling of virtual, clone or broken devices not implementing calibration
|
||||
* data properly.
|
||||
*/
|
||||
for (i = 0; i < ARRAY_SIZE(ds->accel_calib_data); i++) {
|
||||
if (ds->accel_calib_data[i].sens_denom == 0) {
|
||||
hid_warn(hdev, "Invalid accelerometer calibration data for axis (%d), disabling calibration.",
|
||||
ds->accel_calib_data[i].abs_code);
|
||||
ds->accel_calib_data[i].bias = 0;
|
||||
ds->accel_calib_data[i].sens_numer = DS_ACC_RANGE;
|
||||
ds->accel_calib_data[i].sens_denom = S16_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
err_free:
|
||||
kfree(buf);
|
||||
return ret;
|
||||
|
||||
@@ -525,6 +525,8 @@ static const struct hid_device_id uclogic_devices[] = {
|
||||
USB_DEVICE_ID_UGEE_XPPEN_TABLET_G640) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_UGEE,
|
||||
USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO01) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_UGEE,
|
||||
USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO01_V2) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_UGEE,
|
||||
USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO_L) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_UGEE,
|
||||
|
||||
@@ -1655,6 +1655,8 @@ int uclogic_params_init(struct uclogic_params *params,
|
||||
break;
|
||||
case VID_PID(USB_VENDOR_ID_UGEE,
|
||||
USB_DEVICE_ID_UGEE_PARBLO_A610_PRO):
|
||||
case VID_PID(USB_VENDOR_ID_UGEE,
|
||||
USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO01_V2):
|
||||
case VID_PID(USB_VENDOR_ID_UGEE,
|
||||
USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO_L):
|
||||
case VID_PID(USB_VENDOR_ID_UGEE,
|
||||
|
||||
@@ -987,11 +987,11 @@ static void apple_nvme_reset_work(struct work_struct *work)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (anv->ctrl.ctrl_config & NVME_CC_ENABLE)
|
||||
apple_nvme_disable(anv, false);
|
||||
|
||||
/* RTKit must be shut down cleanly for the (soft)-reset to work */
|
||||
if (apple_rtkit_is_running(anv->rtk)) {
|
||||
/* reset the controller if it is enabled */
|
||||
if (anv->ctrl.ctrl_config & NVME_CC_ENABLE)
|
||||
apple_nvme_disable(anv, false);
|
||||
dev_dbg(anv->dev, "Trying to shut down RTKit before reset.");
|
||||
ret = apple_rtkit_shutdown(anv->rtk);
|
||||
if (ret)
|
||||
|
||||
@@ -1050,10 +1050,10 @@ int dfs_cache_update_tgthint(const unsigned int xid, struct cifs_ses *ses,
|
||||
const struct nls_table *cp, int remap, const char *path,
|
||||
const struct dfs_cache_tgt_iterator *it)
|
||||
{
|
||||
int rc;
|
||||
const char *npath;
|
||||
struct cache_entry *ce;
|
||||
struct cache_dfs_tgt *t;
|
||||
struct cache_entry *ce;
|
||||
const char *npath;
|
||||
int rc = 0;
|
||||
|
||||
npath = dfs_cache_canonical_path(path, cp, remap);
|
||||
if (IS_ERR(npath))
|
||||
|
||||
@@ -577,26 +577,25 @@ static int erofs_fc_parse_param(struct fs_context *fc,
|
||||
}
|
||||
++ctx->devs->extra_devices;
|
||||
break;
|
||||
case Opt_fsid:
|
||||
#ifdef CONFIG_EROFS_FS_ONDEMAND
|
||||
case Opt_fsid:
|
||||
kfree(ctx->fsid);
|
||||
ctx->fsid = kstrdup(param->string, GFP_KERNEL);
|
||||
if (!ctx->fsid)
|
||||
return -ENOMEM;
|
||||
#else
|
||||
errorfc(fc, "fsid option not supported");
|
||||
#endif
|
||||
break;
|
||||
case Opt_domain_id:
|
||||
#ifdef CONFIG_EROFS_FS_ONDEMAND
|
||||
kfree(ctx->domain_id);
|
||||
ctx->domain_id = kstrdup(param->string, GFP_KERNEL);
|
||||
if (!ctx->domain_id)
|
||||
return -ENOMEM;
|
||||
#else
|
||||
errorfc(fc, "domain_id option not supported");
|
||||
#endif
|
||||
break;
|
||||
#else
|
||||
case Opt_fsid:
|
||||
case Opt_domain_id:
|
||||
errorfc(fc, "%s option not supported", erofs_fs_parameters[opt].name);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return -ENOPARAM;
|
||||
}
|
||||
|
||||
@@ -793,12 +793,16 @@ static int z_erofs_iomap_begin_report(struct inode *inode, loff_t offset,
|
||||
iomap->type = IOMAP_HOLE;
|
||||
iomap->addr = IOMAP_NULL_ADDR;
|
||||
/*
|
||||
* No strict rule how to describe extents for post EOF, yet
|
||||
* we need do like below. Otherwise, iomap itself will get
|
||||
* No strict rule on how to describe extents for post EOF, yet
|
||||
* we need to do like below. Otherwise, iomap itself will get
|
||||
* into an endless loop on post EOF.
|
||||
*
|
||||
* Calculate the effective offset by subtracting extent start
|
||||
* (map.m_la) from the requested offset, and add it to length.
|
||||
* (NB: offset >= map.m_la always)
|
||||
*/
|
||||
if (iomap->offset >= inode->i_size)
|
||||
iomap->length = length + map.m_la - offset;
|
||||
iomap->length = length + offset - map.m_la;
|
||||
}
|
||||
iomap->flags = 0;
|
||||
return 0;
|
||||
|
||||
@@ -847,6 +847,9 @@ static int bpf_send_signal_common(u32 sig, enum pid_type type)
|
||||
return -EPERM;
|
||||
if (unlikely(!nmi_uaccess_okay()))
|
||||
return -EPERM;
|
||||
/* Task should not be pid=1 to avoid kernel panic. */
|
||||
if (unlikely(is_global_init(current)))
|
||||
return -EPERM;
|
||||
|
||||
if (irqs_disabled()) {
|
||||
/* Do an early check on signal validity. Otherwise,
|
||||
|
||||
@@ -4034,7 +4034,7 @@ struct sk_buff *skb_segment_list(struct sk_buff *skb,
|
||||
|
||||
skb_shinfo(skb)->frag_list = NULL;
|
||||
|
||||
do {
|
||||
while (list_skb) {
|
||||
nskb = list_skb;
|
||||
list_skb = list_skb->next;
|
||||
|
||||
@@ -4080,8 +4080,7 @@ struct sk_buff *skb_segment_list(struct sk_buff *skb,
|
||||
if (skb_needs_linearize(nskb, features) &&
|
||||
__skb_linearize(nskb))
|
||||
goto err_linearize;
|
||||
|
||||
} while (list_skb);
|
||||
}
|
||||
|
||||
skb->truesize = skb->truesize - delta_truesize;
|
||||
skb->data_len = skb->data_len - delta_len;
|
||||
|
||||
@@ -4859,6 +4859,9 @@ static bool ieee80211_prepare_and_rx_handle(struct ieee80211_rx_data *rx,
|
||||
*/
|
||||
shwt = skb_hwtstamps(rx->skb);
|
||||
shwt->hwtstamp = skb_hwtstamps(skb)->hwtstamp;
|
||||
|
||||
/* Update the hdr pointer to the new skb for translation below */
|
||||
hdr = (struct ieee80211_hdr *)rx->skb->data;
|
||||
}
|
||||
|
||||
if (unlikely(rx->sta && rx->sta->sta.mlo)) {
|
||||
|
||||
@@ -587,6 +587,11 @@ static void mctp_sk_unhash(struct sock *sk)
|
||||
del_timer_sync(&msk->key_expiry);
|
||||
}
|
||||
|
||||
static void mctp_sk_destruct(struct sock *sk)
|
||||
{
|
||||
skb_queue_purge(&sk->sk_receive_queue);
|
||||
}
|
||||
|
||||
static struct proto mctp_proto = {
|
||||
.name = "MCTP",
|
||||
.owner = THIS_MODULE,
|
||||
@@ -623,6 +628,7 @@ static int mctp_pf_create(struct net *net, struct socket *sock,
|
||||
return -ENOMEM;
|
||||
|
||||
sock_init_data(sock, sk);
|
||||
sk->sk_destruct = mctp_sk_destruct;
|
||||
|
||||
rc = 0;
|
||||
if (sk->sk_prot->init)
|
||||
|
||||
@@ -115,17 +115,24 @@ pub unsafe fn call_printk(
|
||||
macro_rules! print_macro (
|
||||
// The non-continuation cases (most of them, e.g. `INFO`).
|
||||
($format_string:path, $($arg:tt)+) => (
|
||||
// SAFETY: This hidden macro should only be called by the documented
|
||||
// printing macros which ensure the format string is one of the fixed
|
||||
// ones. All `__LOG_PREFIX`s are null-terminated as they are generated
|
||||
// by the `module!` proc macro or fixed values defined in a kernel
|
||||
// crate.
|
||||
unsafe {
|
||||
$crate::print::call_printk(
|
||||
&$format_string,
|
||||
crate::__LOG_PREFIX,
|
||||
format_args!($($arg)+),
|
||||
);
|
||||
// To remain sound, `arg`s must be expanded outside the `unsafe` block.
|
||||
// Typically one would use a `let` binding for that; however, `format_args!`
|
||||
// takes borrows on the arguments, but does not extend the scope of temporaries.
|
||||
// Therefore, a `match` expression is used to keep them around, since
|
||||
// the scrutinee is kept until the end of the `match`.
|
||||
match format_args!($($arg)+) {
|
||||
// SAFETY: This hidden macro should only be called by the documented
|
||||
// printing macros which ensure the format string is one of the fixed
|
||||
// ones. All `__LOG_PREFIX`s are null-terminated as they are generated
|
||||
// by the `module!` proc macro or fixed values defined in a kernel
|
||||
// crate.
|
||||
args => unsafe {
|
||||
$crate::print::call_printk(
|
||||
&$format_string,
|
||||
crate::__LOG_PREFIX,
|
||||
args,
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
);
|
||||
|
||||
@@ -20,7 +20,7 @@ CLANG_TARGET_FLAGS := $(CLANG_TARGET_FLAGS_$(ARCH))
|
||||
|
||||
ifeq ($(CROSS_COMPILE),)
|
||||
ifeq ($(CLANG_TARGET_FLAGS),)
|
||||
$(error Specify CROSS_COMPILE or add '--target=' option to lib.mk
|
||||
$(error Specify CROSS_COMPILE or add '--target=' option to lib.mk)
|
||||
else
|
||||
CLANG_FLAGS += --target=$(CLANG_TARGET_FLAGS)
|
||||
endif # CLANG_TARGET_FLAGS
|
||||
|
||||
Reference in New Issue
Block a user