Linux 6.13.1
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.13.1 kernel.
All users of the 6.13 kernel series must upgrade.
The updated 6.13.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.13.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
------------
Makefile | 2 drivers/gpu/drm/v3d/v3d_irq.c | 16 ++ drivers/hid/hid-ids.h | 1 drivers/hid/hid-multitouch.c | 8 - drivers/hid/wacom_sys.c | 24 ++-- drivers/input/joystick/xpad.c | 9 + drivers/input/keyboard/atkbd.c | 2 drivers/net/wireless/realtek/rtl8xxxu/core.c | 20 +++ drivers/scsi/storvsc_drv.c | 8 + drivers/usb/gadget/function/u_serial.c | 8 - drivers/usb/serial/quatech2.c | 2 drivers/vfio/platform/vfio_platform_common.c | 10 + fs/gfs2/file.c | 1 fs/libfs.c | 162 ++++++++++++--------------- fs/smb/client/smb2inode.c | 92 +++++++++++---- include/linux/fs.h | 1 io_uring/rsrc.c | 7 + mm/filemap.c | 17 ++ mm/shmem.c | 4 net/sched/sch_ets.c | 2 sound/usb/quirks.c | 2 tools/power/cpupower/Makefile | 8 + 22 files changed, 264 insertions(+), 142 deletions(-)
Alex Williamson (1):
vfio/platform: check the bounds of read/write syscalls
Andreas Gruenbacher (1):
gfs2: Truncate address space when flipping GFS2_DIF_JDATA flag
Chuck Lever (5):
libfs: Return ENOSPC when the directory offset range is exhausted Revert "libfs: Add simple_offset_empty()"
Revert "libfs: fix infinite directory reads for offset dir"
libfs: Replace simple_offset end-of-directory detection
libfs: Use d_children list to iterate simple_offset directories
Easwar Hariharan (1):
scsi: storvsc: Ratelimit warning logs to prevent VM denial of service
Greg Kroah-Hartman (2):
Revert "usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null" Linux 6.13.1
Hans de Goede (1):
wifi: rtl8xxxu: add more missing rtl8192cu USB IDs
Jack Greiner (1):
Input: xpad - add support for wooting two he (arm)
Jamal Hadi Salim (1):
net: sched: fix ets qdisc OOB Indexing
Jann Horn (1):
io_uring/rsrc: require cloned buffers to share accounting contexts
Jason Gerecke (1):
HID: wacom: Initialize brightness of LED trigger
Jiri Kosina (1):
Revert "HID: multitouch: Add support for lenovo Y9000P Touchpad"
Leonardo Brondani Schenkel (1):
Input: xpad - improve name of 8BitDo controller 2dc8:3106
Lianqin Hu (1):
ALSA: usb-audio: Add delay quirk for USB Audio Device
Linus Torvalds (1):
cachestat: fix page cache statistics permission checking
Mark Pearson (1):
Input: atkbd - map F23 key to support default copilot shortcut
Matheos Mattsson (1):
Input: xpad - add support for Nacon Evol-X Xbox One Controller
Maíra Canal (1):
drm/v3d: Assign job pointer to NULL before signaling the fence
Nicolas Nobelis (1):
Input: xpad - add support for Nacon Pro Compact
Nilton Perim Neto (1):
Input: xpad - add unofficial Xbox 360 wireless receiver clone
Paulo Alcantara (1):
smb: client: handle lack of EA support in smb2_query_path_info()
Peng Fan (1):
pm: cpupower: Makefile: Fix cross compilation
Pierre-Loup A. Griffais (1):
Input: xpad - add QH Electronics VID/PID
Qasim Ijaz (1):
USB: serial: quatech2: fix null-ptr-deref in qt2_process_read_urb()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 13 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Baby Opossum Posse
drivers/gpu/drm/v3d/v3d_irq.c +12 -4
@@ -107,8 +107,10 @@ v3d_irq(int irq, void *arg)v3d_job_update_stats (&v3d->bin_job->base,V3D_BIN );trace_v3d_bcl_irq (&v3d->drm, fence->seqno); -dma_fence_signal (&fence->base); + v3d->bin_job =NULL ; +dma_fence_signal (&fence->base); + status =IRQ_HANDLED ; }
@@ -118,8 +120,10 @@ v3d_irq(int irq, void *arg)v3d_job_update_stats (&v3d->render_job->base,V3D_RENDER );trace_v3d_rcl_irq (&v3d->drm, fence->seqno); -dma_fence_signal (&fence->base); + v3d->render_job =NULL ; +dma_fence_signal (&fence->base); + status =IRQ_HANDLED ; }
@@ -129,8 +133,10 @@ v3d_irq(int irq, void *arg)v3d_job_update_stats (&v3d->csd_job->base,V3D_CSD );trace_v3d_csd_irq (&v3d->drm, fence->seqno); -dma_fence_signal (&fence->base); + v3d->csd_job =NULL ; +dma_fence_signal (&fence->base); + status =IRQ_HANDLED ; }
@@ -167,8 +173,10 @@ v3d_hub_irq(int irq, void *arg)v3d_job_update_stats (&v3d->tfu_job->base,V3D_TFU );trace_v3d_tfu_irq (&v3d->drm, fence->seqno); -dma_fence_signal (&fence->base); + v3d->tfu_job =NULL ; +dma_fence_signal (&fence->base); + status =IRQ_HANDLED ; }
drivers/hid/hid-ids.h +0 -1
@@ -506,7 +506,6 @@#define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100#define I2C_VENDOR_ID_GOODIX 0x27c6 -#define I2C_DEVICE_ID_GOODIX_01E0 0x01e0#define I2C_DEVICE_ID_GOODIX_01E8 0x01e8#define I2C_DEVICE_ID_GOODIX_01E9 0x01e9#define I2C_DEVICE_ID_GOODIX_01F0 0x01f0
drivers/hid/hid-multitouch.c +2 -6
@@ -1460,8 +1460,7 @@ static const __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc, {if (hdev->vendor ==I2C_VENDOR_ID_GOODIX && (hdev->product ==I2C_DEVICE_ID_GOODIX_01E8 || - hdev->product ==I2C_DEVICE_ID_GOODIX_01E9 || - hdev->product ==I2C_DEVICE_ID_GOODIX_01E0 )) { + hdev->product ==I2C_DEVICE_ID_GOODIX_01E9 )) {if (rdesc[607 ] ==0x15 ) { rdesc[607 ] =0x25 ; dev_info(
@@ -2085,10 +2084,7 @@ static const struct hid_device_id mt_devices[] = { I2C_DEVICE_ID_GOODIX_01E8) }, { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,HID_DEVICE (BUS_I2C ,HID_GROUP_ANY ,I2C_VENDOR_ID_GOODIX , - I2C_DEVICE_ID_GOODIX_01E9) }, - { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU, -HID_DEVICE (BUS_I2C ,HID_GROUP_ANY ,I2C_VENDOR_ID_GOODIX , - I2C_DEVICE_ID_GOODIX_01E0) }, + I2C_DEVICE_ID_GOODIX_01E8) }, /* GoodTouch panels */ { .driver_data = MT_CLS_NSMU,
drivers/hid/wacom_sys.c +13 -11
@@ -1370,17 +1370,6 @@ static int wacom_led_register_one(struct device *dev, struct wacom *wacom,if (!name)return -ENOMEM ; -if (!read_only) { - led->trigger.name = name; - error =devm_led_trigger_register (dev, &led->trigger); -if (error) { -hid_err (wacom->hdev, -"failed to register LED trigger %s: %d\n" , - led->cdev.name, error); -return error; - } - } - led->group = group; led->id = id; led->wacom = wacom;
@@ -1397,6 +1386,19 @@ static int wacom_led_register_one(struct device *dev, struct wacom *wacom, led->cdev.brightness_set = wacom_led_readonly_brightness_set; } +if (!read_only) { + led->trigger.name = name; +if (id == wacom->led.groups[group].select) + led->trigger.brightness =wacom_leds_brightness_get (led); + error =devm_led_trigger_register (dev, &led->trigger); +if (error) { +hid_err (wacom->hdev, +"failed to register LED trigger %s: %d\n" , + led->cdev.name, error); +return error; + } + } + error =devm_led_classdev_register (dev, &led->cdev);if (error) { hid_err(wacom->hdev,
drivers/input/joystick/xpad.c +8 -1
@@ -150,6 +150,7 @@ static const struct xpad_device { { 0x045e, 0x028e, "Microsoft X-Box 360 pad", 0, XTYPE_XBOX360 }, { 0x045e, 0x028f, "Microsoft X-Box 360 pad v2", 0, XTYPE_XBOX360 }, { 0x045e, 0x0291, "Xbox 360 Wireless Receiver (XBOX)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, + { 0x045e, 0x02a9, "Xbox 360 Wireless Receiver (Unofficial)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, { 0x045e, 0x02d1, "Microsoft X-Box One pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x02dd, "Microsoft X-Box One pad (Firmware 2015)", 0, XTYPE_XBOXONE }, { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", MAP_PADDLES, XTYPE_XBOXONE },
@@ -305,6 +306,7 @@ static const struct xpad_device { { 0x1689, 0xfe00, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x17ef, 0x6182, "Lenovo Legion Controller for Windows", 0, XTYPE_XBOX360 }, { 0x1949, 0x041a, "Amazon Game Controller", 0, XTYPE_XBOX360 }, + { 0x1a86, 0xe310, "QH Electronics Controller", 0, XTYPE_XBOX360 }, { 0x1bad, 0x0002, "Harmonix Rock Band Guitar", 0, XTYPE_XBOX360 }, { 0x1bad, 0x0003, "Harmonix Rock Band Drumkit", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 }, { 0x1bad, 0x0130, "Ion Drum Rocker", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 },
@@ -373,16 +375,19 @@ static const struct xpad_device { { 0x294b, 0x3303, "Snakebyte GAMEPAD BASE X", 0, XTYPE_XBOXONE }, { 0x294b, 0x3404, "Snakebyte GAMEPAD RGB X", 0, XTYPE_XBOXONE }, { 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE }, - { 0x2dc8, 0x3106, "8BitDo Pro 2 Wired Controller", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x3106, "8BitDo Ultimate Wireless / Pro 2 Wired Controller", 0, XTYPE_XBOX360 }, { 0x2dc8, 0x310a, "8BitDo Ultimate 2C Wireless Controller", 0, XTYPE_XBOX360 }, { 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE }, { 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 }, { 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 }, { 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 }, { 0x31e3, 0x1220, "Wooting Two HE", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1230, "Wooting Two HE (ARM)", 0, XTYPE_XBOX360 }, { 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 }, { 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 }, { 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 }, + { 0x3285, 0x0646, "Nacon Pro Compact", 0, XTYPE_XBOXONE }, + { 0x3285, 0x0663, "Nacon Evol-X", 0, XTYPE_XBOXONE }, { 0x3537, 0x1004, "GameSir T4 Kaleid", 0, XTYPE_XBOX360 }, { 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX }, { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
@@ -514,6 +519,7 @@ static const struct usb_device_id xpad_table[] = {XPAD_XBOX360_VENDOR (0x1689 ),/* Razer Onza */ XPAD_XBOX360_VENDOR (0x17ef ),/* Lenovo */ XPAD_XBOX360_VENDOR (0x1949 ),/* Amazon controllers */ +XPAD_XBOX360_VENDOR (0x1a86 ),/* QH Electronics */ XPAD_XBOX360_VENDOR (0x1bad ),/* Harmonix Rock Band guitar and drums */ XPAD_XBOX360_VENDOR (0x20d6 ),/* PowerA controllers */ XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA controllers */
@@ -530,6 +536,7 @@ static const struct usb_device_id xpad_table[] = {XPAD_XBOX360_VENDOR (0x2f24 ),/* GameSir controllers */ XPAD_XBOX360_VENDOR (0x31e3 ),/* Wooting Keyboards */ XPAD_XBOX360_VENDOR (0x3285 ),/* Nacon GC-100 */ +XPAD_XBOXONE_VENDOR (0x3285 ),/* Nacon Evol-X */ XPAD_XBOX360_VENDOR (0x3537 ),/* GameSir Controllers */ XPAD_XBOXONE_VENDOR(0x3537), /* GameSir Controllers */ { }
drivers/input/keyboard/atkbd.c +1 -1
@@ -89,7 +89,7 @@ static const unsigned short atkbd_set2_keycode[ATKBD_KEYMAP_SIZE] = {0 ,46 ,45 ,32 ,18 ,5 ,4 ,95 ,0 ,57 ,47 ,33 ,20 ,19 ,6 ,183 ,0 ,49 ,48 ,35 ,34 ,21 ,7 ,184 ,0 ,0 ,50 ,36 ,22 ,8 ,9 ,185 ,0 ,51 ,37 ,23 ,24 ,11 ,10 ,0 ,0 ,52 ,53 ,38 ,39 ,25 ,12 ,0 , -0 ,89 ,40 ,0 ,26 ,13 ,0 ,0 ,58 ,54 ,28 ,27 ,0 ,43 ,0 ,85 , +0 ,89 ,40 ,0 ,26 ,13 ,0 ,193 ,58 ,54 ,28 ,27 ,0 ,43 ,0 ,85 ,0 ,86 ,91 ,90 ,92 ,0 ,14 ,94 ,0 ,79 ,124 ,75 ,71 ,121 ,0 ,0 , 82, 83, 80, 76, 77, 72, 1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
drivers/net/wireless/realtek/rtl8xxxu/core.c +20 -0
@@ -8147,6 +8147,8 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817e, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8186, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x818a, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x317f, 0xff, 0xff, 0xff),
@@ -8157,12 +8159,18 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x1102, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x11f2, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x06f8, 0xe033, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8188, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8189, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0x9041, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0x9043, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x17ba, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x1e1e, 0xff, 0xff, 0xff),
@@ -8179,6 +8187,10 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x13d3, 0x3357, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x13d3, 0x3358, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x13d3, 0x3359, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x330b, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0x4902, 0xff, 0xff, 0xff),
@@ -8193,6 +8205,8 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x4856, 0x0091, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x9846, 0x9041, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0xcdab, 0x8010, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaff7, 0xff, 0xff, 0xff),
@@ -8218,6 +8232,8 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0586, 0x341f, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x06f8, 0xe033, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x06f8, 0xe035, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x17ab, 0xff, 0xff, 0xff),
@@ -8226,6 +8242,8 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0070, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0077, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0789, 0x016d, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x07aa, 0x0056, 0xff, 0xff, 0xff),
@@ -8248,6 +8266,8 @@ static const struct usb_device_id dev_table[] = { .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x330a, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, +{USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x330d, 0xff, 0xff, 0xff), + .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0xab2b, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x20f4, 0x624d, 0xff, 0xff, 0xff),
drivers/scsi/storvsc_drv.c +7 -1
@@ -171,6 +171,12 @@ do { \ dev_warn(&(dev)->device, fmt, ##__VA_ARGS__); \ } while (0) +#define storvsc_log_ratelimited (dev, level, fmt, ...) \ +do { \ + if (do_logging(level)) \ + dev_warn_ratelimited(&(dev)->device, fmt, ##__VA_ARGS__); \ +} while (0) +struct vmscsi_request {u16 length;u8 srb_status;
@@ -1177,7 +1183,7 @@ static void storvsc_on_io_completion(struct storvsc_device *stor_device,int loglevel = (stor_pkt->vm_srb.cdb[0 ] ==TEST_UNIT_READY ) ?STORVSC_LOGGING_WARN :STORVSC_LOGGING_ERROR ; - storvsc_log(device, loglevel, + storvsc_log_ratelimited(device, loglevel, "tag#%d cmd 0x%x status: scsi 0x%x srb 0x%x hv 0x%x\n", scsi_cmd_to_rq(request->cmd)->tag, stor_pkt->vm_srb.cdb[0],
drivers/usb/gadget/function/u_serial.c +4 -4
@@ -1420,10 +1420,6 @@ void gserial_disconnect(struct gserial *gser)/* REVISIT as above: how best to track this? */ port->port_line_coding = gser->port_line_coding; -/* disable endpoints, aborting down any active I/O */ -usb_ep_disable (gser->out); -usb_ep_disable (gser->in); - port->port_usb =NULL ; gser->ioport =NULL ;if (port->port.count >0 ) {
@@ -1435,6 +1431,10 @@ void gserial_disconnect(struct gserial *gser)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); +usb_ep_disable (gser->in); +/* finally, free any unused/unusable I/O buffers */ spin_lock_irqsave (&port->port_lock, flags);if (port->port.count ==0 )
drivers/usb/serial/quatech2.c +1 -1
@@ -503,7 +503,7 @@ static void qt2_process_read_urb(struct urb *urb) newport = *(ch +3 ); -if (newport > serial->num_ports) { +if (newport >= serial->num_ports) {dev_err (&port->dev,"%s - port change to invalid port: %i\n" , __func__, newport);
drivers/vfio/platform/vfio_platform_common.c +10 -0
@@ -388,6 +388,11 @@ static ssize_t vfio_platform_read_mmio(struct vfio_platform_region *reg, {unsigned int done =0 ; +if (off >= reg->size) +return -EINVAL ; + + count =min_t (size_t, count, reg->size - off); +if (!reg->ioaddr) { reg->ioaddr =ioremap (reg->addr, reg->size);
@@ -467,6 +472,11 @@ static ssize_t vfio_platform_write_mmio(struct vfio_platform_region *reg, {unsigned int done =0 ; +if (off >= reg->size) +return -EINVAL ; + + count =min_t (size_t, count, reg->size - off); +if (!reg->ioaddr) { reg->ioaddr =ioremap (reg->addr, reg->size);
fs/gfs2/file.c +1 -0
@@ -251,6 +251,7 @@ static int do_gfs2_set_flags(struct inode *inode, u32 reqflags, u32 mask) error =filemap_fdatawait (inode->i_mapping);if (error) goto out; +truncate_inode_pages (inode->i_mapping,0 );if (new_flags &GFS2_DIF_JDATA )gfs2_ordered_del_inode (ip); }
fs/libfs.c +77 -85
243 lines not on this page · raw message
fs/smb/client/smb2inode.c +69 -23
162 lines not on this page · raw message
include/linux/fs.h +0 -1
@@ -3468,7 +3468,6 @@ struct offset_ctx {void simple_offset_init (struct offset_ctx *octx);int simple_offset_add (struct offset_ctx *octx,struct dentry *dentry);void simple_offset_remove (struct offset_ctx *octx,struct dentry *dentry); -int simple_offset_empty (struct dentry *dentry);int simple_offset_rename (struct inode *old_dir,struct dentry *old_dentry,struct inode *new_dir,struct dentry *new_dentry); int simple_offset_rename_exchange(struct inode *old_dir,
io_uring/rsrc.c +7 -0
@@ -931,6 +931,13 @@ static int io_clone_buffers(struct io_ring_ctx *ctx, struct io_ring_ctx *src_ctxint i, ret, off, nr;unsigned int nbufs; +/* +* Accounting state is shared between the two rings; that only works if +* both rings are accounted towards the same counters. +*/ +if (ctx->user != src_ctx->user || ctx->mm_account != src_ctx->mm_account) +return -EINVAL ; +/* if offsets are given, must have nr specified too */ if (!arg->nr && (arg->dst_off || arg->src_off))return -EINVAL ;
mm/filemap.c +17 -0
@@ -4375,6 +4375,20 @@ static void filemap_cachestat(struct address_space *mapping,rcu_read_unlock (); } +/* +* See mincore: reveal pagecache information only for files +* that the calling process has write access to, or could (if +* tried) open for writing. +*/ +static inline bool can_do_cachestat (struct file *f) +{ +if (f->f_mode &FMODE_WRITE ) +return true; +if (inode_owner_or_capable (file_mnt_idmap (f),file_inode (f))) +return true; +return file_permission (f,MAY_WRITE ) ==0 ; +} +/* * The cachestat(2) system call. *
@@ -4430,6 +4444,9 @@ SYSCALL_DEFINE4(cachestat, unsigned int, fd,if (is_file_hugepages (fd_file (f)))return -EOPNOTSUPP ; +if (!can_do_cachestat (fd_file (f))) +return -EPERM ; +if (flags !=0 )return -EINVAL ;
mm/shmem.c +2 -2
@@ -3821,7 +3821,7 @@ static int shmem_unlink(struct inode *dir, struct dentry *dentry)static int shmem_rmdir (struct inode *dir,struct dentry *dentry) { -if (!simple_offset_empty (dentry)) +if (!simple_empty (dentry))return -ENOTEMPTY ;drop_nlink (d_inode (dentry));
@@ -3878,7 +3878,7 @@ static int shmem_rename2(struct mnt_idmap *idmap,return simple_offset_rename_exchange (old_dir, old_dentry, new_dir, new_dentry); -if (!simple_offset_empty (new_dentry)) +if (!simple_empty (new_dentry))return -ENOTEMPTY ;if (flags &RENAME_WHITEOUT ) {
net/sched/sch_ets.c +2 -0
@@ -91,6 +91,8 @@ ets_class_from_arg(struct Qdisc *sch, unsigned long arg) {struct ets_sched *q =qdisc_priv (sch); +if (arg ==0 || arg > q->nbands) +return NULL ;return &q->classes[arg -1 ]; }
sound/usb/quirks.c +2 -0
@@ -2239,6 +2239,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_CTL_MSG_DELAY_1M),DEVICE_FLG (0x0c45 ,0x6340 ,/* Sonix HD USB Camera */ QUIRK_FLAG_GET_SAMPLE_RATE ), +DEVICE_FLG (0x0d8c ,0x0014 ,/* USB Audio Device */ +QUIRK_FLAG_CTL_MSG_DELAY_1M ),DEVICE_FLG (0x0ecb ,0x205c ,/* JBL Quantum610 Wireless */ QUIRK_FLAG_FIXED_RATE ), DEVICE_FLG(0x0ecb, 0x2069, /* JBL Quantum810 Wireless */
tools/power/cpupower/Makefile +8 -0
@@ -87,11 +87,19 @@ INSTALL_SCRIPT = ${INSTALL} -m 644 # to something more interesting, like "arm-linux-". If you want # to compile vs uClibc, that can be done here as well. CROSS ?= #/usr/i386-linux-uclibc/usr/bin/i386-uclibc- +ifneq ($(CROSS), ) +CC = $(CROSS)gcc +LD = $(CROSS)gcc +AR = $(CROSS)ar +STRIP = $(CROSS)strip +RANLIB = $(CROSS)ranlib +else CC ?= $(CROSS)gcc LD ?= $(CROSS)gcc AR ?= $(CROSS)ar STRIP ?= $(CROSS)strip RANLIB ?= $(CROSS)ranlib +endif HOSTCC = gcc MKDIR = mkdir