Linux 5.4.172
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.172 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.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/base/arch_topology.c | 2 drivers/base/cacheinfo.c | 18 ++-- drivers/base/core.c | 8 +- drivers/base/cpu.c | 39 ++++------ drivers/base/firmware_loader/fallback.c | 2 drivers/base/memory.c | 24 +++--- drivers/base/node.c | 28 +++---- drivers/base/platform.c | 2 drivers/base/power/sysfs.c | 50 ++++++------- drivers/base/power/wakeup_stats.c | 12 +-- drivers/base/soc.c | 10 +- drivers/bluetooth/bfusb.c | 3 drivers/bluetooth/btusb.c | 5 + drivers/char/random.c | 118 ++++++++++++++++++------------- drivers/gpu/drm/i915/intel_pm.c | 6 - drivers/media/usb/uvc/uvc_driver.c | 7 - drivers/mfd/intel-lpss-acpi.c | 7 + drivers/mmc/host/sdhci-pci-core.c | 1 drivers/mmc/host/sdhci-pci.h | 1 drivers/net/can/usb/gs_usb.c | 5 + drivers/net/veth.c | 1 drivers/staging/greybus/audio_topology.c | 92 +++++++++++------------- drivers/staging/wlan-ng/hfa384x_usb.c | 22 ++--- drivers/usb/core/hcd.c | 9 ++ drivers/usb/core/hub.c | 2 kernel/workqueue.c | 9 ++ 27 files changed, 264 insertions(+), 221 deletions(-)
Adrian Hunter (1):
mmc: sdhci-pci: Add PCI ID for Intel ADL
Alan Stern (2):
USB: core: Fix bug in resuming hub's handling of wakeup requests
USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status
Andy Shevchenko (1):
mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
Arnd Bergmann (1):
staging: greybus: fix stack size warning with UBSAN
Brian Silverman (1):
can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved}Daniel Borkmann (1):
veth: Do not record rx queue hint in veth_xmit
Dominik Brodowski (1):
random: fix crash on multiple early calls to add_bootloader_randomness()
Eric Biggers (2):
random: fix data race on crng_node_pool
random: fix data race on crng init time
Frederic Weisbecker (1):
workqueue: Fix unbind_workers() VS wq_worker_running() race
Greg Kroah-Hartman (1):
Linux 5.4.172
Joe Perches (1):
drivers core: Use sysfs_emit and sysfs_emit_at for show(device *...) functions
Johan Hovold (1):
Bluetooth: bfusb: fix division by zero in send path
Marc Kleine-Budde (1):
can: gs_usb: fix use of uninitialized variable, detach device on reception of invalid USB data
Mark-YW.Chen (1):
Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb()
Nathan Chancellor (2):
staging: wlan-ng: Avoid bitwise vs logical OR warning in hfa384x_usb_throttlefn() drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk()
Ricardo Ribalda (1):
media: Revert "media: uvcvideo: Set unique vdev name based in type"
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 171 +SUBLEVEL = 172 EXTRAVERSION = NAME = Kleptomaniac Octopus
drivers/base/arch_topology.c +1 -1
@@ -48,7 +48,7 @@ static ssize_t cpu_capacity_show(struct device *dev, { struct cpu *cpu = container_of(dev, struct cpu, dev); -return sprintf (buf,"%lu\n" ,topology_get_cpu_scale (cpu->dev.id)); +return sysfs_emit (buf,"%lu\n" ,topology_get_cpu_scale (cpu->dev.id)); }static void update_topology_flags_workfn (struct work_struct *work);
drivers/base/cacheinfo.c +9 -9
@@ -377,7 +377,7 @@ static ssize_t size_show(struct device *dev, {struct cacheinfo *this_leaf =dev_get_drvdata (dev); -return sprintf (buf,"%uK\n" , this_leaf->size >>10 ); +return sysfs_emit (buf,"%uK\n" , this_leaf->size >>10 ); }static ssize_t shared_cpumap_show_func (struct device *dev,bool list,char *buf)
@@ -407,11 +407,11 @@ static ssize_t type_show(struct device *dev,switch (this_leaf->type) {case CACHE_TYPE_DATA : -return sprintf (buf,"Data\n" ); +return sysfs_emit (buf,"Data\n" );case CACHE_TYPE_INST : -return sprintf (buf,"Instruction\n" ); +return sysfs_emit (buf,"Instruction\n" );case CACHE_TYPE_UNIFIED : -return sprintf (buf,"Unified\n" ); +return sysfs_emit (buf,"Unified\n" );default :return -EINVAL ; }
@@ -425,11 +425,11 @@ static ssize_t allocation_policy_show(struct device *dev,int n =0 ;if ((ci_attr &CACHE_READ_ALLOCATE ) && (ci_attr &CACHE_WRITE_ALLOCATE )) - n =sprintf (buf,"ReadWriteAllocate\n" ); + n =sysfs_emit (buf,"ReadWriteAllocate\n" );else if (ci_attr &CACHE_READ_ALLOCATE ) - n =sprintf (buf,"ReadAllocate\n" ); + n =sysfs_emit (buf,"ReadAllocate\n" );else if (ci_attr &CACHE_WRITE_ALLOCATE ) - n =sprintf (buf,"WriteAllocate\n" ); + n =sysfs_emit (buf,"WriteAllocate\n" );return n; }
@@ -441,9 +441,9 @@ static ssize_t write_policy_show(struct device *dev,int n =0 ;if (ci_attr &CACHE_WRITE_THROUGH ) - n =sprintf (buf,"WriteThrough\n" ); + n =sysfs_emit (buf,"WriteThrough\n" );else if (ci_attr &CACHE_WRITE_BACK ) - n =sprintf (buf,"WriteBack\n" ); + n =sysfs_emit (buf,"WriteBack\n" );return n; }
drivers/base/core.c +4 -4
@@ -1027,7 +1027,7 @@ ssize_t device_show_ulong(struct device *dev, char *buf) {struct dev_ext_attribute *ea =to_ext_attr (attr); -return snprintf (buf,PAGE_SIZE ,"%lx\n" , *(unsigned long *)(ea->var)); +return sysfs_emit (buf,"%lx\n" , *(unsigned long *)(ea->var)); }EXPORT_SYMBOL_GPL (device_show_ulong);
@@ -1057,7 +1057,7 @@ ssize_t device_show_int(struct device *dev, {struct dev_ext_attribute *ea =to_ext_attr (attr); -return snprintf (buf,PAGE_SIZE ,"%d\n" , *(int *)(ea->var)); +return sysfs_emit (buf,"%d\n" , *(int *)(ea->var)); }EXPORT_SYMBOL_GPL (device_show_int);
@@ -1078,7 +1078,7 @@ ssize_t device_show_bool(struct device *dev, struct device_attribute *attr, {struct dev_ext_attribute *ea =to_ext_attr (attr); -return snprintf (buf,PAGE_SIZE ,"%d\n" , *(bool *)(ea->var)); +return sysfs_emit (buf,"%d\n" , *(bool *)(ea->var)); }EXPORT_SYMBOL_GPL (device_show_bool);
@@ -1310,7 +1310,7 @@ static ssize_t online_show(struct device *dev, struct device_attribute *attr,device_lock (dev); val = !dev->offline;device_unlock (dev); -return sprintf (buf,"%u\n" , val); +return sysfs_emit (buf,"%u\n" , val); } static ssize_t online_store(struct device *dev, struct device_attribute *attr,
drivers/base/cpu.c +17 -22
@@ -156,7 +156,7 @@ static ssize_t show_crash_notes(struct device *dev, struct device_attribute *att* operation should be safe. No locking required. */ addr =per_cpu_ptr_to_phys (per_cpu_ptr (crash_notes, cpunum)); - rc =sprintf (buf,"%Lx\n" , addr); + rc =sysfs_emit (buf,"%Lx\n" , addr);return rc; } static DEVICE_ATTR(crash_notes, 0400, show_crash_notes, NULL);
@@ -167,7 +167,7 @@ static ssize_t show_crash_notes_size(struct device *dev, {ssize_t rc; - rc =sprintf (buf,"%zu\n" ,sizeof (note_buf_t)); + rc =sysfs_emit (buf,"%zu\n" ,sizeof (note_buf_t));return rc; } static DEVICE_ATTR(crash_notes_size, 0400, show_crash_notes_size, NULL);
@@ -231,8 +231,7 @@ static struct cpu_attr cpu_attrs[] = {static ssize_t print_cpus_kernel_max (struct device *dev,struct device_attribute *attr,char *buf) { -int n =snprintf (buf,PAGE_SIZE -2 ,"%d\n" ,NR_CPUS -1 ); -return n; +return sprintf (buf,"%d\n" ,NR_CPUS -1 ); } static DEVICE_ATTR(kernel_max, 0444, print_cpus_kernel_max, NULL);
@@ -272,7 +271,7 @@ static DEVICE_ATTR(offline, 0444, print_cpus_offline, NULL);static ssize_t print_cpus_isolated (struct device *dev,struct device_attribute *attr,char *buf) { -int n =0 , len =PAGE_SIZE -2 ; +int n;cpumask_var_t isolated;if (!alloc_cpumask_var (&isolated,GFP_KERNEL ))
@@ -280,7 +279,7 @@ static ssize_t print_cpus_isolated(struct device *dev,cpumask_andnot (isolated, cpu_possible_mask,housekeeping_cpumask (HK_FLAG_DOMAIN )); - n =scnprintf (buf, len,"%*pbl\n" ,cpumask_pr_args (isolated)); + n =sysfs_emit (buf,"%*pbl\n" ,cpumask_pr_args (isolated));free_cpumask_var (isolated);
@@ -292,11 +291,7 @@ static DEVICE_ATTR(isolated, 0444, print_cpus_isolated, NULL);static ssize_t print_cpus_nohz_full (struct device *dev,struct device_attribute *attr,char *buf) { -int n =0 , len =PAGE_SIZE -2 ; - - n =scnprintf (buf, len,"%*pbl\n" ,cpumask_pr_args (tick_nohz_full_mask)); - -return n; +return sysfs_emit (buf,"%*pbl\n" ,cpumask_pr_args (tick_nohz_full_mask)); } static DEVICE_ATTR(nohz_full, 0444, print_cpus_nohz_full, NULL);#endif
@@ -328,8 +323,8 @@ static ssize_t print_cpu_modalias(struct device *dev,ssize_t n;u32 i; - n =sprintf (buf,"cpu:type:" CPU_FEATURE_TYPEFMT ":feature:" , -CPU_FEATURE_TYPEVAL ); + n =sysfs_emit (buf,"cpu:type:" CPU_FEATURE_TYPEFMT ":feature:" , +CPU_FEATURE_TYPEVAL );for (i =0 ; i <MAX_CPU_FEATURES ; i++)if (cpu_have_feature (i)) {
@@ -521,56 +516,56 @@ static void __init cpu_dev_register_generic(void)ssize_t __weak cpu_show_meltdown (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_spectre_v1 (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_spectre_v2 (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_spec_store_bypass (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_l1tf (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_mds (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_tsx_async_abort (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_itlb_multihit (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); }ssize_t __weak cpu_show_srbds (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"Not affected\n" ); +return sysfs_emit (buf,"Not affected\n" ); } static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL);
drivers/base/firmware_loader/fallback.c +1 -1
@@ -215,7 +215,7 @@ static ssize_t firmware_loading_show(struct device *dev, loading =fw_sysfs_loading (fw_sysfs->fw_priv);mutex_unlock (&fw_lock); -return sprintf (buf,"%d\n" , loading); +return sysfs_emit (buf,"%d\n" , loading); }/**
drivers/base/memory.c +12 -12
@@ -110,7 +110,7 @@ static ssize_t phys_index_show(struct device *dev,unsigned long phys_index; phys_index = mem->start_section_nr / sections_per_block; -return sprintf (buf,"%08lx\n" , phys_index); +return sysfs_emit (buf,"%08lx\n" , phys_index); }/*
@@ -120,7 +120,7 @@ static ssize_t phys_index_show(struct device *dev,static ssize_t removable_show (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"%d\n" , (int )IS_ENABLED (CONFIG_MEMORY_HOTREMOVE )); +return sysfs_emit (buf,"%d\n" , (int )IS_ENABLED (CONFIG_MEMORY_HOTREMOVE )); }/*
@@ -138,17 +138,17 @@ static ssize_t state_show(struct device *dev, struct device_attribute *attr,*/ switch (mem->state) {case MEM_ONLINE : - len =sprintf (buf,"online\n" ); + len =sysfs_emit (buf,"online\n" );break ;case MEM_OFFLINE : - len =sprintf (buf,"offline\n" ); + len =sysfs_emit (buf,"offline\n" );break ;case MEM_GOING_OFFLINE : - len =sprintf (buf,"going-offline\n" ); + len =sysfs_emit (buf,"going-offline\n" );break ;default : - len =sprintf (buf,"ERROR-UNKNOWN-%ld\n" , - mem->state); + len =sysfs_emit (buf,"ERROR-UNKNOWN-%ld\n" , + mem->state);WARN_ON (1 );break ; }
@@ -358,7 +358,7 @@ static ssize_t phys_device_show(struct device *dev, struct device_attribute *attr, char *buf) { struct memory_block *mem = to_memory_block(dev); -return sprintf (buf,"%d\n" , mem->phys_device); +return sysfs_emit (buf,"%d\n" , mem->phys_device); }#ifdef CONFIG_MEMORY_HOTREMOVE
@@ -396,7 +396,7 @@ static ssize_t valid_zones_show(struct device *dev,*/ if (!test_pages_in_a_zone (start_pfn, start_pfn + nr_pages, &valid_start_pfn, &valid_end_pfn)) -return sprintf (buf,"none\n" ); +return sysfs_emit (buf,"none\n" ); start_pfn = valid_start_pfn;strcat (buf,page_zone (pfn_to_page (start_pfn))->name); goto out;
@@ -429,7 +429,7 @@ static DEVICE_ATTR_RO(removable);static ssize_t block_size_bytes_show (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf,"%lx\n" ,memory_block_size_bytes ()); +return sysfs_emit (buf,"%lx\n" ,memory_block_size_bytes ()); }static DEVICE_ATTR_RO (block_size_bytes);
@@ -442,9 +442,9 @@ static ssize_t auto_online_blocks_show(struct device *dev, struct device_attribute *attr, char *buf) { if (memhp_auto_online) - return sprintf(buf, "online\n"); + return sysfs_emit(buf, "online\n"); else - return sprintf(buf, "offline\n"); + return sysfs_emit(buf, "offline\n"); } static ssize_t auto_online_blocks_store(struct device *dev,
drivers/base/node.c +14 -14
@@ -368,7 +368,7 @@ static ssize_t node_read_meminfo(struct device *dev,si_meminfo_node (&i, nid); sreclaimable =node_page_state (pgdat,NR_SLAB_RECLAIMABLE ); sunreclaimable =node_page_state (pgdat,NR_SLAB_UNRECLAIMABLE ); - n =sprintf (buf, + n =sysfs_emit (buf,"Node %d MemTotal: %8lu kB\n" "Node %d MemFree: %8lu kB\n" "Node %d MemUsed: %8lu kB\n"
@@ -469,19 +469,19 @@ static DEVICE_ATTR(meminfo, S_IRUGO, node_read_meminfo, NULL);static ssize_t node_read_numastat (struct device *dev,struct device_attribute *attr,char *buf) { -return sprintf (buf, -"numa_hit %lu\n" -"numa_miss %lu\n" -"numa_foreign %lu\n" -"interleave_hit %lu\n" -"local_node %lu\n" -"other_node %lu\n" , -sum_zone_numa_state (dev->id,NUMA_HIT ), -sum_zone_numa_state (dev->id,NUMA_MISS ), -sum_zone_numa_state (dev->id,NUMA_FOREIGN ), -sum_zone_numa_state (dev->id,NUMA_INTERLEAVE_HIT ), -sum_zone_numa_state (dev->id,NUMA_LOCAL ), -sum_zone_numa_state (dev->id,NUMA_OTHER )); +return sysfs_emit (buf, +"numa_hit %lu\n" +"numa_miss %lu\n" +"numa_foreign %lu\n" +"interleave_hit %lu\n" +"local_node %lu\n" +"other_node %lu\n" , +sum_zone_numa_state (dev->id,NUMA_HIT ), +sum_zone_numa_state (dev->id,NUMA_MISS ), +sum_zone_numa_state (dev->id,NUMA_FOREIGN ), +sum_zone_numa_state (dev->id,NUMA_INTERLEAVE_HIT ), +sum_zone_numa_state (dev->id,NUMA_LOCAL ), +sum_zone_numa_state (dev->id,NUMA_OTHER )); } static DEVICE_ATTR(numastat, S_IRUGO, node_read_numastat, NULL);
drivers/base/platform.c +1 -1
@@ -1009,7 +1009,7 @@ static ssize_t driver_override_show(struct device *dev,ssize_t len;device_lock (dev); - len =sprintf (buf,"%s\n" , pdev->driver_override); + len =sysfs_emit (buf,"%s\n" , pdev->driver_override);device_unlock (dev);return len; }
drivers/base/power/sysfs.c +25 -25
135 lines not on this page · raw message
drivers/base/power/wakeup_stats.c +6 -6
@@ -42,7 +42,7 @@ static ssize_t active_time_ms_show(struct device *dev,ktime_t active_time = ws->active ?ktime_sub (ktime_get (), ws->last_time) :0 ; -return sprintf (buf,"%lld\n" ,ktime_to_ms (active_time)); +return sysfs_emit (buf,"%lld\n" ,ktime_to_ms (active_time)); }static DEVICE_ATTR_RO (active_time_ms);
@@ -57,7 +57,7 @@ static ssize_t total_time_ms_show(struct device *dev, active_time =ktime_sub (ktime_get (), ws->last_time); total_time =ktime_add (total_time, active_time); } -return sprintf (buf,"%lld\n" ,ktime_to_ms (total_time)); +return sysfs_emit (buf,"%lld\n" ,ktime_to_ms (total_time)); }static DEVICE_ATTR_RO (total_time_ms);
@@ -73,7 +73,7 @@ static ssize_t max_time_ms_show(struct device *dev,if (active_time > max_time) max_time = active_time; } -return sprintf (buf,"%lld\n" ,ktime_to_ms (max_time)); +return sysfs_emit (buf,"%lld\n" ,ktime_to_ms (max_time)); }static DEVICE_ATTR_RO (max_time_ms);
@@ -82,7 +82,7 @@ static ssize_t last_change_ms_show(struct device *dev, {struct wakeup_source *ws =dev_get_drvdata (dev); -return sprintf (buf,"%lld\n" ,ktime_to_ms (ws->last_time)); +return sysfs_emit (buf,"%lld\n" ,ktime_to_ms (ws->last_time)); }static DEVICE_ATTR_RO (last_change_ms);
@@ -91,7 +91,7 @@ static ssize_t name_show(struct device *dev, struct device_attribute *attr, {struct wakeup_source *ws =dev_get_drvdata (dev); -return sprintf (buf,"%s\n" , ws->name); +return sysfs_emit (buf,"%s\n" , ws->name); }static DEVICE_ATTR_RO (name);
@@ -106,7 +106,7 @@ static ssize_t prevent_suspend_time_ms_show(struct device *dev, prevent_sleep_time =ktime_add (prevent_sleep_time,ktime_sub (ktime_get (), ws->start_prevent_time)); } -return sprintf (buf,"%lld\n" ,ktime_to_ms (prevent_sleep_time)); +return sysfs_emit (buf,"%lld\n" ,ktime_to_ms (prevent_sleep_time)); }static DEVICE_ATTR_RO (prevent_suspend_time_ms);
drivers/base/soc.c +5 -5
@@ -76,15 +76,15 @@ static ssize_t soc_info_get(struct device *dev, struct soc_device *soc_dev = container_of(dev, struct soc_device, dev);if (attr == &dev_attr_machine) -return sprintf (buf,"%s\n" , soc_dev->attr->machine); +return sysfs_emit (buf,"%s\n" , soc_dev->attr->machine);if (attr == &dev_attr_family) -return sprintf (buf,"%s\n" , soc_dev->attr->family); +return sysfs_emit (buf,"%s\n" , soc_dev->attr->family);if (attr == &dev_attr_revision) -return sprintf (buf,"%s\n" , soc_dev->attr->revision); +return sysfs_emit (buf,"%s\n" , soc_dev->attr->revision);if (attr == &dev_attr_serial_number) -return sprintf (buf,"%s\n" , soc_dev->attr->serial_number); +return sysfs_emit (buf,"%s\n" , soc_dev->attr->serial_number);if (attr == &dev_attr_soc_id) -return sprintf (buf,"%s\n" , soc_dev->attr->soc_id); +return sysfs_emit (buf,"%s\n" , soc_dev->attr->soc_id);return -EINVAL ;
drivers/bluetooth/bfusb.c +3 -0
@@ -629,6 +629,9 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i data->bulk_out_ep = bulk_out_ep->desc.bEndpointAddress; data->bulk_pkt_size =le16_to_cpu (bulk_out_ep->desc.wMaxPacketSize); +if (!data->bulk_pkt_size) + goto done; +rwlock_init (&data->lock); data->reassembly =NULL ;
drivers/bluetooth/btusb.c +5 -0
@@ -2568,6 +2568,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb) skb =bt_skb_alloc (HCI_WMT_MAX_EVENT_SIZE ,GFP_ATOMIC );if (!skb) { hdev->stat.err_rx++; +kfree (urb->setup_packet);return ; }
@@ -2588,6 +2589,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb) data->evt_skb =skb_clone (skb,GFP_ATOMIC );if (!data->evt_skb) {kfree_skb (skb); +kfree (urb->setup_packet);return ; } }
@@ -2596,6 +2598,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)if (err <0 ) {kfree_skb (data->evt_skb); data->evt_skb =NULL ; +kfree (urb->setup_packet);return ; }
@@ -2606,6 +2609,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)wake_up_bit (&data->flags,BTUSB_TX_WAIT_VND_EVT ); } +kfree (urb->setup_packet);return ; }else if (urb->status == -ENOENT ) {/* Avoid suspend failed when usb_kill_urb */
@@ -2626,6 +2630,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)usb_anchor_urb (urb, &data->ctrl_anchor); err =usb_submit_urb (urb,GFP_ATOMIC );if (err <0 ) { +kfree (urb->setup_packet);/* -EPERM: urb is being killed; * -ENODEV: device got disconnected */
drivers/char/random.c +70 -48
187 lines not on this page · raw message
drivers/gpu/drm/i915/intel_pm.c +3 -3
@@ -3017,9 +3017,9 @@ static void snb_wm_latency_quirk(struct drm_i915_private *dev_priv)* The BIOS provided WM memory latency values are often * inadequate for high resolution displays. Adjust them. */ - changed =ilk_increase_wm_latency (dev_priv, dev_priv->wm.pri_latency,12 ) | -ilk_increase_wm_latency (dev_priv, dev_priv->wm.spr_latency,12 ) | -ilk_increase_wm_latency (dev_priv, dev_priv->wm.cur_latency,12 ); + changed =ilk_increase_wm_latency (dev_priv, dev_priv->wm.pri_latency,12 ); + changed |=ilk_increase_wm_latency (dev_priv, dev_priv->wm.spr_latency,12 ); + changed |=ilk_increase_wm_latency (dev_priv, dev_priv->wm.cur_latency,12 );if (!changed)return ;
drivers/media/usb/uvc/uvc_driver.c +1 -6
@@ -1972,7 +1972,6 @@ int uvc_register_video_device(struct uvc_device *dev,const struct v4l2_file_operations *fops, const struct v4l2_ioctl_ops *ioctl_ops) { - const char *name; int ret;/* Initialize the video buffers queue. */
@@ -2001,20 +2000,16 @@ int uvc_register_video_device(struct uvc_device *dev,case V4L2_BUF_TYPE_VIDEO_CAPTURE :default : vdev->device_caps =V4L2_CAP_VIDEO_CAPTURE |V4L2_CAP_STREAMING ; - name ="Video Capture" ;break ;case V4L2_BUF_TYPE_VIDEO_OUTPUT : vdev->device_caps =V4L2_CAP_VIDEO_OUTPUT |V4L2_CAP_STREAMING ; - name ="Video Output" ;break ;case V4L2_BUF_TYPE_META_CAPTURE : vdev->device_caps =V4L2_CAP_META_CAPTURE |V4L2_CAP_STREAMING ; - name ="Metadata" ;break ; } -snprintf (vdev->name,sizeof (vdev->name),"%s %u" , name, - stream->header.bTerminalLink); +strscpy (vdev->name, dev->name,sizeof (vdev->name));/* * Set the driver data before calling video_register_device, otherwise
drivers/mfd/intel-lpss-acpi.c +6 -1
@@ -102,6 +102,7 @@ static int intel_lpss_acpi_probe(struct platform_device *pdev) {struct intel_lpss_platform_info *info;const struct acpi_device_id *id; +int ret; id =acpi_match_device (intel_lpss_acpi_ids, &pdev->dev);if (!id)
@@ -115,10 +116,14 @@ static int intel_lpss_acpi_probe(struct platform_device *pdev) info->mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); info->irq =platform_get_irq (pdev,0 ); + ret =intel_lpss_probe (&pdev->dev, info); +if (ret) +return ret; +pm_runtime_set_active (&pdev->dev);pm_runtime_enable (&pdev->dev); -return intel_lpss_probe (&pdev->dev, info); +return 0 ; }static int intel_lpss_acpi_remove (struct platform_device *pdev)
drivers/mmc/host/sdhci-pci-core.c +1 -0
@@ -1936,6 +1936,7 @@ static const struct pci_device_id pci_ids[] = {SDHCI_PCI_DEVICE (INTEL ,JSL_SD , intel_byt_sd),SDHCI_PCI_DEVICE (INTEL ,LKF_EMMC , intel_glk_emmc),SDHCI_PCI_DEVICE (INTEL ,LKF_SD , intel_byt_sd), +SDHCI_PCI_DEVICE (INTEL ,ADL_EMMC , intel_glk_emmc),SDHCI_PCI_DEVICE (O2 ,8120 , o2),SDHCI_PCI_DEVICE (O2 ,8220 , o2), SDHCI_PCI_DEVICE(O2, 8221, o2),
drivers/mmc/host/sdhci-pci.h +1 -0
@@ -59,6 +59,7 @@#define PCI_DEVICE_ID_INTEL_JSL_SD 0x4df8#define PCI_DEVICE_ID_INTEL_LKF_EMMC 0x98c4#define PCI_DEVICE_ID_INTEL_LKF_SD 0x98f8 +#define PCI_DEVICE_ID_INTEL_ADL_EMMC 0x54c4#define PCI_DEVICE_ID_SYSKONNECT_8000 0x8000#define PCI_DEVICE_ID_VIA_95D0 0x95d0
drivers/net/can/usb/gs_usb.c +4 -1
@@ -320,7 +320,7 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)/* device reports out of range channel id */ if (hf->channel >=GS_MAX_INTF ) - goto resubmit_urb; + goto device_detach; dev = usbcan->canch[hf->channel];
@@ -405,6 +405,7 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)/* USB failure take down all interfaces */ if (rc == -ENODEV ) { + device_detach:for (rc =0 ; rc <GS_MAX_INTF ; rc++) {if (usbcan->canch[rc])netif_device_detach (usbcan->canch[rc]->netdev);
@@ -506,6 +507,8 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb, hf->echo_id = idx; hf->channel = dev->channel; + hf->flags =0 ; + hf->reserved =0 ; cf = (struct can_frame *)skb->data;
drivers/net/veth.c +0 -1
@@ -254,7 +254,6 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)if (rxq < rcv->real_num_rx_queues) { rq = &rcv_priv->rq[rxq]; rcv_xdp =rcu_access_pointer (rq->xdp_prog); -skb_record_rx_queue (skb, rxq); }skb_tx_timestamp (skb);
drivers/staging/greybus/audio_topology.c +45 -47
128 lines not on this page · raw message
drivers/staging/wlan-ng/hfa384x_usb.c +11 -11
@@ -3779,18 +3779,18 @@ static void hfa384x_usb_throttlefn(struct timer_list *t)spin_lock_irqsave (&hw->ctlxq.lock, flags); -/* -* We need to check BOTH the RX and the TX throttle controls, -* so we use the bitwise OR instead of the logical OR. -*/ pr_debug ("flags=0x%lx\n" , hw->usb_flags); -if (!hw->wlandev->hwremoved && - ((test_and_clear_bit (THROTTLE_RX , &hw->usb_flags) && - !test_and_set_bit (WORK_RX_RESUME , &hw->usb_flags)) | - (test_and_clear_bit (THROTTLE_TX , &hw->usb_flags) && - !test_and_set_bit (WORK_TX_RESUME , &hw->usb_flags)) - )) { -schedule_work (&hw->usb_work); +if (!hw->wlandev->hwremoved) { +bool rx_throttle =test_and_clear_bit (THROTTLE_RX , &hw->usb_flags) && + !test_and_set_bit (WORK_RX_RESUME , &hw->usb_flags); +bool tx_throttle =test_and_clear_bit (THROTTLE_TX , &hw->usb_flags) && + !test_and_set_bit (WORK_TX_RESUME , &hw->usb_flags); +/* +* We need to check BOTH the RX and the TX throttle controls, +* so we use the bitwise OR instead of the logical OR. +*/ +if (rx_throttle | tx_throttle) +schedule_work (&hw->usb_work); }spin_unlock_irqrestore (&hw->ctlxq.lock, flags);
drivers/usb/core/hcd.c +8 -1
@@ -753,6 +753,7 @@ void usb_hcd_poll_rh_status(struct usb_hcd *hcd) {struct urb *urb;int length; +int status;unsigned long flags;char buffer[6 ];/* Any root hubs with > 31 ports? */
@@ -770,11 +771,17 @@ void usb_hcd_poll_rh_status(struct usb_hcd *hcd)if (urb) {clear_bit (HCD_FLAG_POLL_PENDING , &hcd->flags); hcd->status_urb =NULL ; +if (urb->transfer_buffer_length >= length) { + status =0 ; + }else { + status = -EOVERFLOW ; + length = urb->transfer_buffer_length; + } urb->actual_length = length;memcpy (urb->transfer_buffer, buffer, length);usb_hcd_unlink_urb_from_ep (hcd, urb); -usb_hcd_giveback_urb (hcd, urb,0 ); +usb_hcd_giveback_urb (hcd, urb, status); }else { length =0 ;set_bit (HCD_FLAG_POLL_PENDING , &hcd->flags);
drivers/usb/core/hub.c +1 -1
@@ -1223,7 +1223,7 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)*/ if (portchange || (hub_is_superspeed (hub->hdev) && port_resumed)) -set_bit (port1, hub->change_bits); +set_bit (port1, hub->event_bits); }else if (udev->persist_enabled) {#ifdef CONFIG_PM
kernel/workqueue.c +9 -0
@@ -855,8 +855,17 @@ void wq_worker_running(struct task_struct *task)if (!worker->sleeping)return ; + +/* +* If preempted by unbind_workers() between the WORKER_NOT_RUNNING check +* and the nr_running increment below, we may ruin the nr_running reset +* and leave with an unexpected pool->nr_running == 1 on the newly unbound +* pool. Protect against such race. +*/ +preempt_disable ();if (!(worker->flags &WORKER_NOT_RUNNING ))atomic_inc (&worker->pool->nr_running); +preempt_enable (); worker->sleeping =0 ; }