Linux 4.19.156
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.156 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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 arch/arc/kernel/entry.S | 16 arch/arc/kernel/stacktrace.c | 7 arch/arm/boot/dts/sun4i-a10.dtsi | 2 arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts | 12 arch/x86/kernel/kexec-bzimage64.c | 3 block/blk-cgroup.c | 15 drivers/acpi/nfit/core.c | 2 drivers/base/dd.c | 7 drivers/crypto/chelsio/chtls/chtls_cm.c | 2 drivers/crypto/chelsio/chtls/chtls_hw.c | 3 drivers/gpu/drm/i915/i915_gpu_error.c | 3 drivers/gpu/drm/vc4/vc4_drv.c | 1 drivers/net/ethernet/cadence/macb_main.c | 3 drivers/net/ethernet/freescale/gianfar.c | 14 drivers/net/phy/sfp.c | 3 drivers/net/usb/qmi_wwan.c | 1 drivers/of/of_reserved_mem.c | 13 drivers/scsi/scsi_scan.c | 7 drivers/tty/serial/8250/8250_mtk.c | 2 drivers/tty/serial/serial_txx9.c | 3 drivers/tty/vt/vt.c | 24 - drivers/usb/core/quirks.c | 3 drivers/usb/mtu3/mtu3_gadget.c | 1 drivers/usb/serial/cyberjack.c | 7 drivers/usb/serial/option.c | 10 fs/btrfs/ctree.h | 15 fs/btrfs/extent_io.c | 221 ++++++++-- fs/btrfs/tree-checker.c | 326 ++++++++++++++++ fs/btrfs/tree-checker.h | 4 fs/btrfs/volumes.c | 115 ----- fs/btrfs/volumes.h | 9 fs/gfs2/glock.c | 3 include/asm-generic/pgtable.h | 4 include/linux/mm.h | 9 include/net/dsa.h | 1 kernel/events/core.c | 12 kernel/fork.c | 10 kernel/futex.c | 16 kernel/kthread.c | 3 kernel/signal.c | 19 kernel/trace/blktrace.c | 18 kernel/trace/ring_buffer.c | 58 ++ kernel/trace/trace.c | 2 kernel/trace/trace.h | 26 + kernel/trace/trace_selftest.c | 9 lib/crc32test.c | 4 lib/fonts/font_10x18.c | 2 lib/fonts/font_6x10.c | 2 lib/fonts/font_6x11.c | 2 lib/fonts/font_7x14.c | 2 lib/fonts/font_8x16.c | 2 lib/fonts/font_8x8.c | 2 lib/fonts/font_acorn_8x8.c | 2 lib/fonts/font_mini_4x6.c | 2 lib/fonts/font_pearl_8x8.c | 2 lib/fonts/font_sun12x22.c | 2 lib/fonts/font_sun8x16.c | 2 mm/mempolicy.c | 6 net/dsa/dsa2.c | 1 net/dsa/slave.c | 5 net/sctp/sm_sideeffect.c | 4 net/tipc/core.c | 5 net/vmw_vsock/af_vsock.c | 2 sound/usb/pcm.c | 6 sound/usb/quirks.c | 1 tools/perf/util/util.h | 2 67 files changed, 807 insertions(+), 297 deletions(-)
Alan Stern (1):
USB: Add NO_LPM quirk for Kingston flash drive
Alexander Aring (1):
gfs2: Wake up when sd_glock_disposal becomes zero
Artem Lapkin (1):
ALSA: usb-audio: add usb vendor id as DSD-capable for Khadas devices
Ben Hutchings (1):
Revert "btrfs: flush write bio if we loop in extent_write_cache_pages"
Chris Wilson (1):
drm/i915: Break up error capture compression loops with cond_resched()
Claire Chang (1):
serial: 8250_mtk: Fix uart_get_baud_rate warning
Claudiu Manoil (2):
gianfar: Replace skb_realloc_headroom with skb_cow_head for PTP
gianfar: Account for Tx PTP timestamp in the skb headroom
Clément Péron (1):
ARM: dts: sun4i-a10: fix cpu_alert temperature
Daniel Vetter (1):
vt: Disable KD_FONT_OP_COPY
Daniele Palmas (3):
net: usb: qmi_wwan: add Telit LE910Cx 0x1230 composition
USB: serial: option: add LE910Cx compositions 0x1203, 0x1230, 0x1231
USB: serial: option: add Telit FN980 composition 0x1055Eddy Wu (1):
fork: fix copy_process(CLONE_PARENT) race with the exiting ->real_parent
Filipe Manana (1):
Btrfs: fix unwritten extent buffers and hangs on future writeback attempts
Gabriel Krisman Bertazi (2):
blk-cgroup: Fix memleak on error path
blk-cgroup: Pre-allocate tree node on blkg_conf_prep
Geoffrey D. Bennett (2):
ALSA: usb-audio: Add implicit feedback quirk for Qu-16
ALSA: usb-audio: Add implicit feedback quirk for MODX
Greg Kroah-Hartman (1):
Linux 4.19.156
Guenter Roeck (1):
tools: perf: Fix build error in v4.19.y
Hoang Huu Le (1):
tipc: fix use-after-free in tipc_bcast_get_mode
Hoegeun Kwon (1):
drm/vc4: drv: Add error handding for bind
Jason Gunthorpe (1):
mm: always have io_remap_pfn_range() set pgprot_decrypted()
Jeff Vander Stoep (1):
vsock: use ns_capable_noaudit() on socket create
Johan Hovold (1):
USB: serial: cyberjack: fix write-URB completion race
Josef Bacik (1):
btrfs: flush write bio if we loop in extent_write_cache_pages
Kairui Song (1):
x86/kexec: Use up-to-dated screen_info copy to fill boot params
Keith Winstein (1):
ALSA: usb-audio: Add implicit feedback quirk for Zoom UAC-2
Lee Jones (1):
Fonts: Replace discarded const qualifier
Luis Chamberlain (1):
blktrace: fix debugfs use after free
Macpaul Lin (1):
usb: mtu3: fix panic in mtu3_gadget_stop()
Mark Deneen (1):
cadence: force nonlinear buffers to be cloned
Mike Galbraith (1):
futex: Handle transient "ownerless" rtmutex state correctly
Ming Lei (1):
scsi: core: Don't start concurrent async scan on same host
Oleg Nesterov (1):
ptrace: fix task_join_group_stop() for the case when current is traced
Pali Rohár (1):
arm64: dts: marvell: espressobin: Add ethernet switch aliases
Petr Malat (1):
sctp: Fix COMM_LOST/CANT_STR_ASSOC err reporting on big-endian platforms
Qinglang Miao (1):
serial: txx9: add missing platform_driver_unregister() on error in serial_txx9_init
Qiujun Huang (1):
tracing: Fix out of bounds write in get_trace_buf
Qu Wenruo (15):
btrfs: extent_io: Kill the forward declaration of flush_write_bio
btrfs: extent_io: Move the BUG_ON() in flush_write_bio() one level up
btrfs: extent_io: Handle errors better in extent_write_full_page()
btrfs: extent_io: Handle errors better in btree_write_cache_pages()
btrfs: extent_io: add proper error handling to lock_extent_buffer_for_io()
btrfs: Don't submit any btree write bio if the fs has errors
btrfs: Move btrfs_check_chunk_valid() to tree-check.[ch] and export it
btrfs: tree-checker: Make chunk item checker messages more readable
btrfs: tree-checker: Make btrfs_check_chunk_valid() return EUCLEAN instead of EIO
btrfs: tree-checker: Check chunk item at tree block read time
btrfs: tree-checker: Verify dev item
btrfs: tree-checker: Fix wrong check on max devid
btrfs: tree-checker: Enhance chunk checker to validate chunk profile
btrfs: tree-checker: Verify inode item
btrfs: tree-checker: fix the error message for transid error
Rafael J. Wysocki (1):
PM: runtime: Resume the device earlier in __device_release_driver()
Shijie Luo (1):
mm: mempolicy: fix potential pte_unmap_unlock pte error
Steven Rostedt (VMware) (3):
ring-buffer: Fix recursion protection transitions between interrupt context
ftrace: Fix recursion check for NMI test
ftrace: Handle tracing when switching between context
Vasily Gorbik (1):
lib/crc32test: remove extra local_irq_disable/enable
Vinay Kumar Yadav (2):
chelsio/chtls: fix memory leaks caused by a race chelsio/chtls: fix always leaking ctrl_skb
Vincent Whitchurch (1):
of: Fix reserved-memory overlap detection
Vineet Gupta (2):
ARC: stack unwinding: avoid indefinite looping
Revert "ARC: entry: fix potential EFA clobber when TIF_SYSCALL_TRACE"
Xiaofei Shen (1):
net: dsa: read mac address from DT for slave device
YueHaibing (1):
sfp: Fix error handing in sfp_probe()
Zhang Qilong (1):
ACPI: NFIT: Fix comparison to '-ENXIO'
Ziyi Cao (1):
USB: serial: option: add Quectel EC200T module support
Zqiang (1):
kthread_worker: prevent queuing delayed work from timer_fn when it is being canceled
kiyin(尹亮) (1):
perf/core: Fix a memory leak in perf_event_parse_addr_filter()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 155 +SUBLEVEL = 156 EXTRAVERSION = NAME = "People's Front"
arch/arc/kernel/entry.S +11 -5
@@ -156,6 +156,7 @@ END(EV_Extension) tracesys: ; save EFA in case tracer wants the PC of traced task ; using ERET won't work since next-PC has already committed + lr r12, [efa] GET_CURR_TASK_FIELD_PTR TASK_THREAD, r11 st r12, [r11, THREAD_FAULT_ADDR] ; thread.fault_address
@@ -198,9 +199,15 @@ tracesys_exit: ; Breakpoint TRAP ; --------------------------------------------- trap_with_param: - mov r0, r12 ; EFA in case ptracer/gdb wants stop_pc + + ; stop_pc info by gdb needs this info + lr r0, [efa] mov r1, sp + ; Now that we have read EFA, it is safe to do "fake" rtie + ; and get out of CPU exception mode + FAKE_RET_FROM_EXCPN + ; Save callee regs in case gdb wants to have a look ; SP will grow up by size of CALLEE Reg-File ; NOTE: clobbers r12
@@ -227,10 +234,6 @@ ENTRY(EV_Trap) EXCEPTION_PROLOGUE - lr r12, [efa] - - FAKE_RET_FROM_EXCPN - ;============ TRAP 1 :breakpoints ; Check ECR for trap with arg (PROLOGUE ensures r9 has ECR) bmsk.f 0, r9, 7
@@ -238,6 +241,9 @@ ENTRY(EV_Trap) ;============ TRAP (no param): syscall top level + ; First return from Exception to pure K mode (Exception/IRQs renabled) + FAKE_RET_FROM_EXCPN + ; If syscall tracing ongoing, invoke pre-post-hooks GET_CURR_THR_INFO_FLAGS r10 btst r10, TIF_SYSCALL_TRACE
arch/arc/kernel/stacktrace.c +6 -1
@@ -115,7 +115,7 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs, int (*consumer_fn) (unsigned int, void *), void *arg) { #ifdef CONFIG_ARC_DW2_UNWIND - int ret = 0; + int ret = 0, cnt = 0;unsigned int address;struct unwind_frame_info frame_info;
@@ -135,6 +135,11 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,break ; frame_info.regs.r63 = frame_info.regs.r31; + +if (cnt++ >128 ) { +printk ("unwinder looping too long, aborting !\n" ); +return 0 ; + } }return address;/* return the last address it saw */
arch/arm/boot/dts/sun4i-a10.dtsi +1 -1
@@ -143,7 +143,7 @@ trips { cpu_alert0: cpu-alert0 { /* milliCelsius */ - temperature = <850000>; + temperature = <85000>; hysteresis = <2000>; type = "passive"; };
arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts +8 -4
@@ -21,6 +21,10 @@ aliases { ethernet0 = ð0; + /* for dsa slave device */ + ethernet1 = &switch0port1; + ethernet2 = &switch0port2; + ethernet3 = &switch0port3; serial0 = &uart0; serial1 = &uart1; };
@@ -136,25 +140,25 @@ #address-cells = <1>; #size-cells = <0>; - port@0 { + switch0port0: port@0 { reg = <0>; label = "cpu"; ethernet = <ð0>; }; - port@1 { + switch0port1: port@1 { reg = <1>; label = "wan"; phy-handle = <&switch0phy0>; }; - port@2 { + switch0port2: port@2 { reg = <2>; label = "lan0"; phy-handle = <&switch0phy1>; }; - port@3 { + switch0port3: port@3 { reg = <3>; label = "lan1"; phy-handle = <&switch0phy2>;
arch/x86/kernel/kexec-bzimage64.c +1 -2
@@ -211,8 +211,7 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params, params->hdr.hardware_subarch = boot_params.hdr.hardware_subarch;/* Copying screen_info will do? */ -memcpy (¶ms->screen_info, &boot_params.screen_info, -sizeof (struct screen_info )); +memcpy (¶ms->screen_info, &screen_info,sizeof (struct screen_info ));/* Fill in memsize later */ params->screen_info.ext_mem_k =0 ;
block/blk-cgroup.c +13 -2
@@ -876,13 +876,20 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, goto fail; } +if (radix_tree_preload (GFP_KERNEL )) { +blkg_free (new_blkg); + ret = -ENOMEM ; + goto fail; + } +rcu_read_lock ();spin_lock_irq (q->queue_lock); blkg =blkg_lookup_check (pos, pol, q);if (IS_ERR (blkg)) { ret =PTR_ERR (blkg); - goto fail_unlock; +blkg_free (new_blkg); + goto fail_preloaded; }if (blkg) {
@@ -891,10 +898,12 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, blkg =blkg_create (pos, q, new_blkg);if (unlikely (IS_ERR (blkg))) { ret =PTR_ERR (blkg); - goto fail_unlock; + goto fail_preloaded; } } +radix_tree_preload_end (); +if (pos == blkcg) goto success; }
@@ -904,6 +913,8 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, ctx->body = body;return 0 ; +fail_preloaded: +radix_tree_preload_end (); fail_unlock:spin_unlock_irq (q->queue_lock);rcu_read_unlock ();
drivers/acpi/nfit/core.c +1 -1
@@ -1535,7 +1535,7 @@ static ssize_t format1_show(struct device *dev, le16_to_cpu(nfit_dcr->dcr->code));break ; } -if (rc !=ENXIO ) +if (rc != -ENXIO )break ; }mutex_unlock (&acpi_desc->init_mutex);
drivers/base/dd.c +5 -2
@@ -931,6 +931,8 @@ static void __device_release_driver(struct device *dev, struct device *parent) drv = dev->driver;if (drv) { +pm_runtime_get_sync (dev); +while (device_links_busy (dev)) {device_unlock (dev);if (parent && dev->bus->need_parent_lock)
@@ -946,11 +948,12 @@ static void __device_release_driver(struct device *dev, struct device *parent)* have released the driver successfully while this one * was waiting, so check for that. */ -if (dev->driver != drv) +if (dev->driver != drv) { +pm_runtime_put (dev);return ; + } } -pm_runtime_get_sync (dev);pm_runtime_clean_up_links (dev);driver_sysfs_remove (dev);
drivers/crypto/chelsio/chtls/chtls_cm.c +1 -1
@@ -175,7 +175,7 @@ static struct sk_buff *alloc_ctrl_skb(struct sk_buff *skb, int len) {if (likely (skb && !skb_shared (skb) && !skb_cloned (skb))) {__skb_trim (skb,0 ); -refcount_add (2 , &skb->users); +refcount_inc (&skb->users); }else { skb =alloc_skb (len,GFP_KERNEL | __GFP_NOFAIL); }
drivers/crypto/chelsio/chtls/chtls_hw.c +3 -0
@@ -368,6 +368,9 @@ int chtls_setkey(struct chtls_sock *csk, u32 keylen, u32 optname)if (ret) goto out_notcb; +if (unlikely (csk_flag (sk,CSK_ABORT_SHUTDOWN ))) + goto out_notcb; +set_wr_txq (skb,CPL_PRIORITY_DATA , csk->tlshws.txqid); csk->wr_credits -=DIV_ROUND_UP (len,16 ); csk->wr_unacked +=DIV_ROUND_UP (len,16 );
drivers/gpu/drm/i915/i915_gpu_error.c +3 -0
@@ -268,6 +268,8 @@ static int compress_page(struct compress *c,if (zlib_deflate (zstream,Z_NO_FLUSH ) !=Z_OK )return -EIO ; + +cond_resched (); }while (zstream->avail_in);/* Fallback to uncompressed if we increase size? */
@@ -347,6 +349,7 @@ static int compress_page(struct compress *c,if (!i915_memcpy_from_wc (ptr, src,PAGE_SIZE ))memcpy (ptr, src,PAGE_SIZE ); dst->pages[dst->page_count++] = ptr; +cond_resched ();return 0 ; }
drivers/gpu/drm/vc4/vc4_drv.c +1 -0
@@ -312,6 +312,7 @@ static int vc4_drm_bind(struct device *dev)component_unbind_all (dev, drm); gem_destroy:vc4_gem_destroy (drm); +drm_mode_config_cleanup (drm);vc4_bo_cache_destroy (drm); dev_put:drm_dev_put (drm);
drivers/net/ethernet/cadence/macb_main.c +2 -1
@@ -1704,7 +1704,8 @@ static inline int macb_clear_csum(struct sk_buff *skb)static int macb_pad_and_fcs (struct sk_buff **skb,struct net_device *ndev) { -bool cloned =skb_cloned (*skb) ||skb_header_cloned (*skb); +bool cloned =skb_cloned (*skb) ||skb_header_cloned (*skb) || +skb_is_nonlinear (*skb);int padlen =ETH_ZLEN - (*skb)->len;int headroom =skb_headroom (*skb);int tailroom =skb_tailroom (*skb);
drivers/net/ethernet/freescale/gianfar.c +3 -11
@@ -1388,7 +1388,7 @@ static int gfar_probe(struct platform_device *ofdev)if (dev->features &NETIF_F_IP_CSUM || priv->device_flags &FSL_GIANFAR_DEV_HAS_TIMER ) - dev->needed_headroom =GMAC_FCB_LEN ; + dev->needed_headroom =GMAC_FCB_LEN +GMAC_TXPAL_LEN ;/* Initializing some of the rx/tx queue level parameters */ for (i =0 ; i < priv->num_tx_queues; i++) {
@@ -2370,20 +2370,12 @@ static netdev_tx_t gfar_start_xmit(struct sk_buff *skb, struct net_device *dev) fcb_len =GMAC_FCB_LEN +GMAC_TXPAL_LEN ;/* make space for additional header when fcb is needed */ -if (fcb_len &&unlikely (skb_headroom (skb) < fcb_len)) { -struct sk_buff *skb_new; - - skb_new =skb_realloc_headroom (skb, fcb_len); -if (!skb_new) { +if (fcb_len) { +if (unlikely (skb_cow_head (skb, fcb_len))) { dev->stats.tx_errors++;dev_kfree_skb_any (skb);return NETDEV_TX_OK ; } - -if (skb->sk) -skb_set_owner_w (skb_new, skb->sk); -dev_consume_skb_any (skb); - skb = skb_new; }/* total number of fragments in the SKB */
drivers/net/phy/sfp.c +2 -1
@@ -1886,7 +1886,8 @@ static int sfp_probe(struct platform_device *pdev)continue ; irq =gpiod_to_irq (sfp->gpio[i]); -if (!irq) { +if (irq <0 ) { + irq =0 ; poll = true;continue ; }
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1268,6 +1268,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x1bc7, 0x1101, 3)}, /* Telit ME910 dual modem */ {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1201, 2)}, /* Telit LE920, LE920A4 */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x1230, 2)}, /* Telit LE910Cx */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1260, 2)}, /* Telit LE910Cx */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1261, 2)}, /* Telit LE910Cx */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1900, 1)}, /* Telit LN940 series */
drivers/of/of_reserved_mem.c +11 -2
@@ -218,6 +218,16 @@ static int __init __rmem_cmp(const void *a, const void *b)if (ra->base > rb->base)return 1 ; +/* +* Put the dynamic allocations (address == 0, size == 0) before static +* allocations at address 0x0 so that overlap detection works +* correctly. +*/ +if (ra->size < rb->size) +return -1 ; +if (ra->size > rb->size) +return 1 ; +return 0 ; }
@@ -235,8 +245,7 @@ static void __init __rmem_check_for_overlap(void) this = &reserved_mem[i]; next = &reserved_mem[i +1 ]; -if (!(this->base && next->base)) -continue ; +if (this->base + this->size > next->base) {phys_addr_t this_end, next_end;
drivers/scsi/scsi_scan.c +4 -3
@@ -1722,15 +1722,16 @@ static void scsi_sysfs_add_devices(struct Scsi_Host *shost)*/ static struct async_scan_data *scsi_prep_async_scan (struct Scsi_Host *shost) { -struct async_scan_data *data; +struct async_scan_data *data =NULL ;unsigned long flags;if (strncmp (scsi_scan_type,"sync" ,4 ) ==0 )return NULL ; +mutex_lock (&shost->scan_mutex);if (shost->async_scan) {shost_printk (KERN_DEBUG , shost,"%s called twice\n" , __func__); -return NULL ; + goto err; } data =kmalloc (sizeof (*data),GFP_KERNEL );
@@ -1741,7 +1742,6 @@ static struct async_scan_data *scsi_prep_async_scan(struct Scsi_Host *shost) goto err;init_completion (&data->prev_finished); -mutex_lock (&shost->scan_mutex);spin_lock_irqsave (shost->host_lock, flags); shost->async_scan =1 ;spin_unlock_irqrestore (shost->host_lock, flags);
@@ -1756,6 +1756,7 @@ static struct async_scan_data *scsi_prep_async_scan(struct Scsi_Host *shost)return data; err: +mutex_unlock (&shost->scan_mutex);kfree (data);return NULL ; }
drivers/tty/serial/8250/8250_mtk.c +1 -1
@@ -47,7 +47,7 @@ mtk8250_set_termios(struct uart_port *port, struct ktermios *termios,*/ baud =tty_termios_baud_rate (termios); -serial8250_do_set_termios (port, termios, old); +serial8250_do_set_termios (port, termios,NULL );tty_termios_encode_baud_rate (termios, baud, baud);
drivers/tty/serial/serial_txx9.c +3 -0
@@ -1284,6 +1284,9 @@ static int __init serial_txx9_init(void)#ifdef ENABLE_SERIAL_TXX9_PCI ret =pci_register_driver (&serial_txx9_pci_driver); +if (ret) { +platform_driver_unregister (&serial_txx9_plat_driver); + }#endif if (ret ==0 ) goto out;
drivers/tty/vt/vt.c +2 -22
@@ -4574,27 +4574,6 @@ static int con_font_default(struct vc_data *vc, struct console_font_op *op)return rc; } -static int con_font_copy (struct vc_data *vc,struct console_font_op *op) -{ -int con = op->height; -int rc; - - -console_lock (); -if (vc->vc_mode !=KD_TEXT ) - rc = -EINVAL ; -else if (!vc->vc_sw->con_font_copy) - rc = -ENOSYS ; -else if (con <0 || !vc_cons_allocated (con)) - rc = -ENOTTY ; -else if (con == vc->vc_num)/* nothing to do */ - rc =0 ; -else - rc = vc->vc_sw->con_font_copy (vc, con); -console_unlock (); -return rc; -} -int con_font_op (struct vc_data *vc,struct console_font_op *op) {switch (op->op) {
@@ -4605,7 +4584,8 @@ int con_font_op(struct vc_data *vc, struct console_font_op *op)case KD_FONT_OP_SET_DEFAULT :return con_font_default (vc, op);case KD_FONT_OP_COPY : -return con_font_copy (vc, op); +/* was buggy and never really used */ +return -EINVAL ; }return -ENOSYS ; }
drivers/usb/core/quirks.c +3 -0
@@ -378,6 +378,9 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x0926, 0x3333), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Kingston DataTraveler 3.0 */ + { USB_DEVICE(0x0951, 0x1666), .driver_info = USB_QUIRK_NO_LPM }, + /* X-Rite/Gretag-Macbeth Eye-One Pro display colorimeter */ { USB_DEVICE(0x0971, 0x2000), .driver_info = USB_QUIRK_NO_SET_INTF },
drivers/usb/mtu3/mtu3_gadget.c +1 -0
@@ -573,6 +573,7 @@ static int mtu3_gadget_stop(struct usb_gadget *g)spin_unlock_irqrestore (&mtu->lock, flags); +synchronize_irq (mtu->irq);return 0 ; }
drivers/usb/serial/cyberjack.c +6 -1
@@ -357,11 +357,12 @@ static void cyberjack_write_bulk_callback(struct urb *urb)struct device *dev = &port->dev;int status = urb->status;unsigned long flags; +bool resubmitted = false; -set_bit (0 , &port->write_urbs_free);if (status) {dev_dbg (dev,"%s - nonzero write bulk status received: %d\n" , __func__, status); +set_bit (0 , &port->write_urbs_free);return ; }
@@ -394,6 +395,8 @@ static void cyberjack_write_bulk_callback(struct urb *urb) goto exit; } + resubmitted = true; +dev_dbg (dev,"%s - priv->wrsent=%d\n" , __func__, priv->wrsent);dev_dbg (dev,"%s - priv->wrfilled=%d\n" , __func__, priv->wrfilled);
@@ -410,6 +413,8 @@ static void cyberjack_write_bulk_callback(struct urb *urb) exit:spin_unlock_irqrestore (&priv->lock, flags); +if (!resubmitted) +set_bit (0 , &port->write_urbs_free);usb_serial_port_softint (port); }
drivers/usb/serial/option.c +10 -0
@@ -250,6 +250,7 @@ static void option_instat_callback(struct urb *urb);#define QUECTEL_PRODUCT_EP06 0x0306#define QUECTEL_PRODUCT_EM12 0x0512#define QUECTEL_PRODUCT_RM500Q 0x0800 +#define QUECTEL_PRODUCT_EC200T 0x6026#define CMOTECH_VENDOR_ID 0x16d8#define CMOTECH_PRODUCT_6001 0x6001
@@ -1117,6 +1118,7 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10), .driver_info = ZLP }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
@@ -1189,6 +1191,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1054, 0xff), /* Telit FT980-KS */ .driver_info = NCTRL(2) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */ + .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
@@ -1201,6 +1205,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(0) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */ + .driver_info = NCTRL(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
@@ -1215,6 +1221,10 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1230, 0xff), /* Telit LE910Cx (rmnet) */ + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */ + .driver_info = NCTRL(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, 0x1260), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
fs/btrfs/ctree.h +15 -0
@@ -1459,6 +1459,21 @@ do { \#define BTRFS_INODE_ROOT_ITEM_INIT (1 << 31) +#define BTRFS_INODE_FLAG_MASK \ + (BTRFS_INODE_NODATASUM | \ + BTRFS_INODE_NODATACOW | \ + BTRFS_INODE_READONLY | \ + BTRFS_INODE_NOCOMPRESS | \ + BTRFS_INODE_PREALLOC | \ + BTRFS_INODE_SYNC | \ + BTRFS_INODE_IMMUTABLE | \ + BTRFS_INODE_APPEND | \ + BTRFS_INODE_NODUMP | \ + BTRFS_INODE_NOATIME | \ + BTRFS_INODE_DIRSYNC | \ + BTRFS_INODE_COMPRESS | \ + BTRFS_INODE_ROOT_ITEM_INIT) +struct btrfs_map_token {const struct extent_buffer *eb;char *kaddr;
fs/btrfs/extent_io.c +167 -54
340 lines not on this page · raw message
fs/btrfs/tree-checker.c +326 -0
344 lines not on this page · raw message
fs/btrfs/tree-checker.h +4 -0
@@ -25,4 +25,8 @@ int btrfs_check_leaf_relaxed(struct btrfs_fs_info *fs_info, struct extent_buffer *leaf);int btrfs_check_node (struct btrfs_fs_info *fs_info,struct extent_buffer *node); +int btrfs_check_chunk_valid (struct btrfs_fs_info *fs_info, +struct extent_buffer *leaf, +struct btrfs_chunk *chunk,u64 logical); +#endif
fs/btrfs/volumes.c +10 -105
139 lines not on this page · raw message
fs/btrfs/volumes.h +9 -0
@@ -257,6 +257,15 @@ struct btrfs_fs_devices {#define BTRFS_BIO_INLINE_CSUM_SIZE 64 +#define BTRFS_MAX_DEVS (info) ((BTRFS_MAX_ITEM_SIZE(info) \ + - sizeof(struct btrfs_chunk)) \ + / sizeof(struct btrfs_stripe) + 1) + +#define BTRFS_MAX_DEVS_SYS_CHUNK ((BTRFS_SYSTEM_CHUNK_ARRAY_SIZE \ + - 2 * sizeof(struct btrfs_disk_key) \ + - 2 * sizeof(struct btrfs_chunk)) \ + / sizeof(struct btrfs_stripe) + 1) +/* * we need the mirror number and stripe index to be passed around * the call chain while we are processing end_io (especially errors).
fs/gfs2/glock.c +2 -1
@@ -870,7 +870,8 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number, out_free:kfree (gl->gl_lksb.sb_lvbptr);kmem_cache_free (cachep, gl); -atomic_dec (&sdp->sd_glock_disposal); +if (atomic_dec_and_test (&sdp->sd_glock_disposal)) +wake_up (&sdp->sd_glock_wait); out:return ret;
include/asm-generic/pgtable.h +0 -4
@@ -1115,10 +1115,6 @@ static inline bool arch_has_pfn_modify_check(void)#endif /* !__ASSEMBLY__ */ -#ifndef io_remap_pfn_range -#define io_remap_pfn_range remap_pfn_range -#endif -#ifndef has_transparent_hugepage#ifdef CONFIG_TRANSPARENT_HUGEPAGE #define has_transparent_hugepage () 1
include/linux/mm.h +9 -0
@@ -2561,6 +2561,15 @@ static inline vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma,return VM_FAULT_NOPAGE ; } +#ifndef io_remap_pfn_range +static inline int io_remap_pfn_range (struct vm_area_struct *vma, +unsigned long addr,unsigned long pfn, +unsigned long size,pgprot_t prot) +{ +return remap_pfn_range (vma, addr, pfn, size,pgprot_decrypted (prot)); +} +#endif +static inline vm_fault_t vmf_error (int err) {if (err == -ENOMEM )
include/net/dsa.h +1 -0
@@ -196,6 +196,7 @@ struct dsa_port {unsigned int index;const char *name;const struct dsa_port *cpu_dp; +const char *mac;struct device_node *dn;unsigned int ageing_time;u8 stp_state;
kernel/events/core.c +5 -7
@@ -9047,6 +9047,7 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,if (token ==IF_SRC_FILE || token ==IF_SRC_FILEADDR ) {int fpos = token ==IF_SRC_FILE ?2 :1 ; +kfree (filename); filename =match_strdup (&args[fpos]);if (!filename) { ret = -ENOMEM ;
@@ -9093,16 +9094,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,*/ ret = -EOPNOTSUPP ;if (!event->ctx->task) - goto fail_free_name; + goto fail;/* look up the path and grab its inode */ ret =kern_path (filename,LOOKUP_FOLLOW , &filter->path);if (ret) - goto fail_free_name; - -kfree (filename); - filename =NULL ; + goto fail; ret = -EINVAL ; if (!filter->path.dentry ||
@@ -9122,13 +9120,13 @@ perf_event_parse_addr_filter(struct perf_event *event, char *fstr,if (state !=IF_STATE_ACTION ) goto fail; +kfree (filename);kfree (orig);return 0 ; -fail_free_name: -kfree (filename); fail: +kfree (filename);free_filters_list (filters);kfree (orig);
kernel/fork.c +5 -5
@@ -1965,14 +1965,9 @@ static __latent_entropy struct task_struct *copy_process(/* ok, now we should be set up.. */ p->pid =pid_nr (pid);if (clone_flags &CLONE_THREAD ) { - p->exit_signal =-1 ; p->group_leader = current->group_leader; p->tgid = current->tgid; }else { -if (clone_flags &CLONE_PARENT ) - p->exit_signal = current->group_leader->exit_signal; -else - p->exit_signal = (clone_flags &CSIGNAL ); p->group_leader = p; p->tgid = p->pid; }
@@ -2017,9 +2012,14 @@ static __latent_entropy struct task_struct *copy_process(if (clone_flags & (CLONE_PARENT |CLONE_THREAD )) { p->real_parent = current->real_parent; p->parent_exec_id = current->parent_exec_id; +if (clone_flags &CLONE_THREAD ) + p->exit_signal =-1 ; +else + p->exit_signal = current->group_leader->exit_signal; }else { p->real_parent = current; p->parent_exec_id = current->self_exec_id; + p->exit_signal = (clone_flags &CSIGNAL ); }klp_copy_process (p);
kernel/futex.c +14 -2
@@ -2417,10 +2417,22 @@ static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, }/* -* Since we just failed the trylock; there must be an owner. +* The trylock just failed, so either there is an owner or +* there is a higher priority waiter than this one. */ newowner =rt_mutex_owner (&pi_state->pi_mutex); -BUG_ON (!newowner); +/* +* If the higher priority waiter has not yet taken over the +* rtmutex then newowner is NULL. We can't return here with +* that state because it's inconsistent vs. the user space +* state. So drop the locks and try again. It's a valid +* situation and not any different from the other retry +* conditions. +*/ +if (unlikely (!newowner)) { + err = -EAGAIN ; + goto handle_err; + } }else {WARN_ON_ONCE (argowner != current);if (oldowner == current) {
kernel/kthread.c +2 -1
@@ -863,7 +863,8 @@ void kthread_delayed_work_timer_fn(struct timer_list *t)/* Move the work from worker->delayed_work_list. */ WARN_ON_ONCE (list_empty (&work->node));list_del_init (&work->node); -kthread_insert_work (worker, work, &worker->work_list); +if (!work->canceling) +kthread_insert_work (worker, work, &worker->work_list);spin_unlock (&worker->lock); }
kernel/signal.c +10 -9
@@ -385,16 +385,17 @@ static bool task_participate_group_stop(struct task_struct *task)void task_join_group_stop (struct task_struct *task) { +unsigned long mask = current->jobctl &JOBCTL_STOP_SIGMASK ; +struct signal_struct *sig = current->signal; + +if (sig->group_stop_count) { + sig->group_stop_count++; + mask |=JOBCTL_STOP_CONSUME ; + }else if (!(sig->flags &SIGNAL_STOP_STOPPED )) +return ; +/* Have the new thread join an on-going signal group stop */ -unsigned long jobctl = current->jobctl; -if (jobctl &JOBCTL_STOP_PENDING ) { -struct signal_struct *sig = current->signal; -unsigned long signr = jobctl &JOBCTL_STOP_SIGMASK ; -unsigned long gstop =JOBCTL_STOP_PENDING |JOBCTL_STOP_CONSUME ; -if (task_set_jobctl_pending (task, signr | gstop)) { - sig->group_stop_count++; - } - } +task_set_jobctl_pending (task, mask |JOBCTL_STOP_PENDING ); }/*
kernel/trace/blktrace.c +12 -6
@@ -521,10 +521,18 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,if (!bt->msg_data) goto err; - ret = -ENOENT ; - - dir =debugfs_lookup (buts->name, blk_debugfs_root); -if (!dir) +#ifdef CONFIG_BLK_DEBUG_FS +/* +* When tracing whole make_request drivers (multiqueue) block devices, +* reuse the existing debugfs directory created by the block layer on +* init. For request-based block devices, all partitions block devices, +* and scsi-generic block devices we create a temporary new debugfs +* directory that will be removed once the trace ends. +*/ +if (q->mq_ops && bdev && bdev == bdev->bd_contains) + dir = q->debugfs_dir; + else +#endif bt->dir = dir =debugfs_create_dir (buts->name, blk_debugfs_root);if (!dir) goto err;
@@ -583,8 +591,6 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, ret =0 ; err: -if (dir && !bt->dir) -dput (dir);if (ret)blk_trace_free (bt);return ret;
kernel/trace/ring_buffer.c +46 -12
92 lines not on this page · raw message
kernel/trace/trace.c +1 -1
@@ -2819,7 +2819,7 @@ static char *get_trace_buf(void)/* Interrupts must see nesting incremented before we use the buffer */ barrier (); -return &buffer->buffer[buffer->nesting][0 ]; +return &buffer->buffer[buffer->nesting -1 ][0 ]; }static void put_trace_buf (void )
kernel/trace/trace.h +23 -3
@@ -534,6 +534,12 @@ enum {TRACE_GRAPH_DEPTH_START_BIT ,TRACE_GRAPH_DEPTH_END_BIT , + +/* +* When transitioning between context, the preempt_count() may +* not be correct. Allow for a single recursion to cover this case. +*/ + TRACE_TRANSITION_BIT, };#define trace_recursion_set (bit) do { (current)->trace_recursion |= (1<<(bit)); } while (0)
@@ -588,14 +594,27 @@ static __always_inline int trace_test_and_set_recursion(int start, int max)return 0 ; bit =trace_get_context_bit () + start; -if (unlikely (val & (1 << bit))) -return -1 ; +if (unlikely (val & (1 << bit))) { +/* +* It could be that preempt_count has not been updated during +* a switch between contexts. Allow for a single recursion. +*/ + bit =TRACE_TRANSITION_BIT ; +if (trace_recursion_test (bit)) +return -1 ; +trace_recursion_set (bit); +barrier (); +return bit +1 ; + } + +/* Normal check passed, clear the transition to allow it again */ +trace_recursion_clear (TRACE_TRANSITION_BIT ); val |=1 << bit; current->trace_recursion = val;barrier (); -return bit; +return bit +1 ; } static __always_inline void trace_clear_recursion(int bit)
@@ -605,6 +624,7 @@ static __always_inline void trace_clear_recursion(int bit)if (!bit)return ; + bit--; bit =1 << bit; val &= ~bit;
kernel/trace/trace_selftest.c +7 -2
@@ -492,8 +492,13 @@ trace_selftest_function_recursion(void)unregister_ftrace_function (&test_rec_probe); ret =-1 ; -if (trace_selftest_recursion_cnt !=1 ) { -pr_cont ("*callback not called once (%d)* " , +/* +* Recursion allows for transitions between context, +* and may call the callback twice. +*/ +if (trace_selftest_recursion_cnt !=1 && + trace_selftest_recursion_cnt !=2 ) { +pr_cont ("*callback not called once (or twice) (%d)* " , trace_selftest_recursion_cnt); goto out; }
lib/crc32test.c +0 -4
@@ -683,7 +683,6 @@ static int __init crc32c_test(void)/* reduce OS noise */ local_irq_save (flags); -local_irq_disable (); nsec =ktime_get_ns ();for (i =0 ; i <100 ; i++) {
@@ -694,7 +693,6 @@ static int __init crc32c_test(void) nsec =ktime_get_ns () - nsec;local_irq_restore (flags); -local_irq_enable ();pr_info ("crc32c: CRC_LE_BITS = %d\n" ,CRC_LE_BITS );
@@ -768,7 +766,6 @@ static int __init crc32_test(void)/* reduce OS noise */ local_irq_save (flags); -local_irq_disable (); nsec =ktime_get_ns ();for (i =0 ; i <100 ; i++) {
@@ -783,7 +780,6 @@ static int __init crc32_test(void) nsec =ktime_get_ns () - nsec;local_irq_restore (flags); -local_irq_enable ();pr_info ("crc32: CRC_LE_BITS = %d, CRC_BE BITS = %d\n" ,CRC_LE_BITS ,CRC_BE_BITS );
lib/fonts/font_10x18.c +1 -1
@@ -8,7 +8,7 @@#define FONTDATAMAX 9216 -static struct font_data fontdata_10x18 = { +static const struct font_data fontdata_10x18 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,0x00 ,/* 0000000000 */
lib/fonts/font_6x10.c +1 -1
@@ -3,7 +3,7 @@#define FONTDATAMAX 2560 -static struct font_data fontdata_6x10 = { +static const struct font_data fontdata_6x10 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */
lib/fonts/font_6x11.c +1 -1
@@ -9,7 +9,7 @@#define FONTDATAMAX (11*256) -static struct font_data fontdata_6x11 = { +static const struct font_data fontdata_6x11 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */
lib/fonts/font_7x14.c +1 -1
@@ -8,7 +8,7 @@#define FONTDATAMAX 3584 -static struct font_data fontdata_7x14 = { +static const struct font_data fontdata_7x14 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 0000000 */
lib/fonts/font_8x16.c +1 -1
@@ -10,7 +10,7 @@#define FONTDATAMAX 4096 -static struct font_data fontdata_8x16 = { +static const struct font_data fontdata_8x16 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */
lib/fonts/font_8x8.c +1 -1
@@ -9,7 +9,7 @@#define FONTDATAMAX 2048 -static struct font_data fontdata_8x8 = { +static const struct font_data fontdata_8x8 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */
lib/fonts/font_acorn_8x8.c +1 -1
@@ -5,7 +5,7 @@#define FONTDATAMAX 2048 -static struct font_data acorndata_8x8 = { +static const struct font_data acorndata_8x8 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 00 */ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,/* ^@ */ /* 01 */ 0x7e ,0x81 ,0xa5 ,0x81 ,0xbd ,0x99 ,0x81 ,0x7e ,/* ^A */
lib/fonts/font_mini_4x6.c +1 -1
@@ -43,7 +43,7 @@ __END__;#define FONTDATAMAX 1536 -static struct font_data fontdata_mini_4x6 = { +static const struct font_data fontdata_mini_4x6 = { {0 ,0 ,FONTDATAMAX ,0 }, {/*{*/ /* Char 0: ' ' */
lib/fonts/font_pearl_8x8.c +1 -1
@@ -14,7 +14,7 @@#define FONTDATAMAX 2048 -static struct font_data fontdata_pearl8x8 = { +static const struct font_data fontdata_pearl8x8 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */
lib/fonts/font_sun12x22.c +1 -1
@@ -3,7 +3,7 @@#define FONTDATAMAX 11264 -static struct font_data fontdata_sun12x22 = { +static const struct font_data fontdata_sun12x22 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,0x00 ,/* 000000000000 */
lib/fonts/font_sun8x16.c +1 -1
@@ -3,7 +3,7 @@#define FONTDATAMAX 4096 -static struct font_data fontdata_sun8x16 = { +static const struct font_data fontdata_sun8x16 = { {0 ,0 ,FONTDATAMAX ,0 }, {/* */ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,/* */ 0x00 ,0x00 ,0x7e ,0x81 ,0xa5 ,0x81 ,0x81 ,0xbd ,0x99 ,0x81 ,0x81 ,0x7e ,0x00 ,0x00 ,0x00 ,0x00 ,
mm/mempolicy.c +3 -3
@@ -496,7 +496,7 @@ static int queue_pages_pte_range(pmd_t *pmd, unsigned long addr,unsigned long flags = qp->flags;int ret;bool has_unmovable = false; -pte_t *pte; +pte_t *pte, *mapped_pte;spinlock_t *ptl; ptl =pmd_trans_huge_lock (pmd, vma);
@@ -510,7 +510,7 @@ static int queue_pages_pte_range(pmd_t *pmd, unsigned long addr,if (pmd_trans_unstable (pmd))return 0 ; - pte =pte_offset_map_lock (walk->mm, pmd, addr, &ptl); + mapped_pte = pte =pte_offset_map_lock (walk->mm, pmd, addr, &ptl);for (; addr != end; pte++, addr +=PAGE_SIZE ) {if (!pte_present (*pte))continue ;
@@ -542,7 +542,7 @@ static int queue_pages_pte_range(pmd_t *pmd, unsigned long addr, }else break ; } -pte_unmap_unlock (pte -1 , ptl); +pte_unmap_unlock (mapped_pte, ptl);cond_resched ();if (has_unmovable)
net/dsa/dsa2.c +1 -0
@@ -261,6 +261,7 @@ static int dsa_port_setup(struct dsa_port *dp)int err =0 ;memset (&dp->devlink_port,0 ,sizeof (dp->devlink_port)); + dp->mac =of_get_mac_address (dp->dn);if (dp->type !=DSA_PORT_TYPE_UNUSED ) err = devlink_port_register(ds->devlink, &dp->devlink_port,
net/dsa/slave.c +4 -1
@@ -1313,7 +1313,10 @@ int dsa_slave_create(struct dsa_port *port) slave_dev->features = master->vlan_features |NETIF_F_HW_TC ; slave_dev->hw_features |=NETIF_F_HW_TC ; slave_dev->ethtool_ops = &dsa_slave_ethtool_ops; -eth_hw_addr_inherit (slave_dev, master); +if (port->mac &&is_valid_ether_addr (port->mac)) +ether_addr_copy (slave_dev->dev_addr, port->mac); +else +eth_hw_addr_inherit (slave_dev, master); slave_dev->priv_flags |=IFF_NO_QUEUE ; slave_dev->netdev_ops = &dsa_slave_netdev_ops; slave_dev->switchdev_ops = &dsa_slave_switchdev_ops;
net/sctp/sm_sideeffect.c +2 -2
@@ -1615,12 +1615,12 @@ static int sctp_cmd_interpreter(enum sctp_event event_type,break ;case SCTP_CMD_INIT_FAILED : -sctp_cmd_init_failed (commands, asoc, cmd->obj.u32); +sctp_cmd_init_failed (commands, asoc, cmd->obj.u16);break ;case SCTP_CMD_ASSOC_FAILED :sctp_cmd_assoc_failed (commands, asoc, event_type, - subtype, chunk, cmd->obj.u32); + subtype, chunk, cmd->obj.u16);break ;case SCTP_CMD_INIT_COUNTER_INC :
net/tipc/core.c +5 -0
@@ -93,6 +93,11 @@ static int __net_init tipc_init_net(struct net *net) static void __net_exit tipc_exit_net(struct net *net) {tipc_net_stop (net); + +/* Make sure the tipc_net_finalize_work stopped +* before releasing the resources. +*/ +flush_scheduled_work ();tipc_bcast_stop (net);tipc_nametbl_stop (net);tipc_sk_rht_destroy (net);
net/vmw_vsock/af_vsock.c +1 -1
@@ -629,7 +629,7 @@ struct sock *__vsock_create(struct net *net, vsk->owner =get_cred (psk->owner); vsk->connect_timeout = psk->connect_timeout; }else { - vsk->trusted =capable (CAP_NET_ADMIN ); + vsk->trusted =ns_capable_noaudit (&init_user_ns,CAP_NET_ADMIN ); vsk->owner =get_current_cred (); vsk->connect_timeout =VSOCK_DEFAULT_CONNECT_TIMEOUT ; }
sound/usb/pcm.c +6 -0
@@ -334,6 +334,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,switch (subs->stream->chip->usb_id) {case USB_ID (0x0763 ,0x2030 ):/* M-Audio Fast Track C400 */ case USB_ID (0x0763 ,0x2031 ):/* M-Audio Fast Track C600 */ +case USB_ID (0x22f0 ,0x0006 ):/* Allen&Heath Qu-16 */ ep =0x81 ; ifnum =3 ; goto add_sync_ep_from_ifnum;
@@ -343,6 +344,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, ifnum =2 ; goto add_sync_ep_from_ifnum;case USB_ID (0x2466 ,0x8003 ):/* Fractal Audio Axe-Fx II */ +case USB_ID (0x0499 ,0x172a ):/* Yamaha MODX */ ep =0x86 ; ifnum =2 ; goto add_sync_ep_from_ifnum;
@@ -350,6 +352,10 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, ep =0x81 ; ifnum =2 ; goto add_sync_ep_from_ifnum; +case USB_ID (0x1686 ,0xf029 ):/* Zoom UAC-2 */ + ep =0x82 ; + ifnum =2 ; + goto add_sync_ep_from_ifnum;case USB_ID (0x1397 ,0x0001 ):/* Behringer UFX1604 */ case USB_ID (0x1397 ,0x0002 ):/* Behringer UFX1204 */ ep =0x81 ;
sound/usb/quirks.c +1 -0
@@ -1466,6 +1466,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,case 0x278b :/* Rotel? */ case 0x292b :/* Gustard/Ess based devices */ case 0x2ab6 :/* T+A devices */ +case 0x3353 :/* Khadas devices */ case 0x3842 :/* EVGA */ case 0xc502 :/* HiBy devices */ if (fp->dsd_raw)
tools/perf/util/util.h +1 -1
@@ -22,7 +22,7 @@ static inline void *zalloc(size_t size)return calloc (1 , size); } -#define zfree (ptr) ({ free(*ptr); *ptr = NULL; }) +#define zfree (ptr) ({ free((void *)*ptr); *ptr = NULL; })struct dirent ;struct nsinfo ;