Linux 5.8.1
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.8.1 kernel.
All users of the 5.8 kernel series must upgrade.
The updated 5.8.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.8.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/arm64/include/asm/archrandom.h | 1 arch/arm64/kernel/kaslr.c | 14 +-- arch/powerpc/include/asm/kasan.h | 2 arch/powerpc/mm/init_32.c | 2 arch/powerpc/mm/kasan/kasan_init_32.c | 29 +++---- drivers/android/binder.c | 15 +++ drivers/gpio/gpio-max77620.c | 5 - drivers/leds/leds-88pm860x.c | 14 +++ drivers/leds/leds-da903x.c | 14 +++ drivers/leds/leds-lm3533.c | 12 ++ drivers/leds/leds-lm36274.c | 15 ++- drivers/leds/leds-wm831x-status.c | 14 +++ drivers/misc/lkdtm/heap.c | 9 +- drivers/mtd/mtdchar.c | 56 +++++++++++-- drivers/pci/controller/pci-tegra.c | 32 ------- drivers/scsi/ufs/ufshcd.c | 9 +- drivers/staging/android/ashmem.c | 12 ++ drivers/staging/rtl8188eu/core/rtw_mlme.c | 4 drivers/staging/rtl8712/hal_init.c | 3 drivers/staging/rtl8712/usb_intf.c | 11 +- drivers/usb/host/xhci-pci.c | 10 +- drivers/usb/misc/iowarrior.c | 35 ++++++-- drivers/usb/serial/qcserial.c | 1 drivers/video/console/vgacon.c | 4 drivers/video/fbdev/omap2/omapfb/dss/dss.c | 2 fs/xattr.c | 84 ++++++++++++++++++-- include/linux/prandom.h | 78 +++++++++++++++++++ include/linux/random.h | 66 ---------------- include/linux/xattr.h | 2 net/bluetooth/hci_event.c | 11 ++ scripts/coccinelle/misc/add_namespace.cocci | 8 + scripts/nsdeps | 2 security/integrity/ima/Kconfig | 2 security/integrity/ima/ima_appraise.c | 6 + security/smack/smackfs.c | 13 ++- sound/core/seq/oss/seq_oss.c | 8 + sound/pci/hda/hda_intel.c | 1 sound/pci/hda/patch_ca0132.c | 12 ++ sound/pci/hda/patch_realtek.c | 114 ++++++++++++++++++++++++++++ 40 files changed, 548 insertions(+), 186 deletions(-)
Adam Ford (1):
omapfb: dss: Fix max fclk divider for omap36xx
Bruno Meneguele (1):
ima: move APPRAISE_BOOTPARAM dependency on ARCH_POLICY to runtime
Christophe Leroy (2):
Revert "powerpc/kasan: Fix shadow pages allocation failure" powerpc/kasan: Fix shadow pages allocation failure
Connor McAdams (3):
ALSA: hda/ca0132 - Add new quirk ID for Recon3D.
ALSA: hda/ca0132 - Fix ZxR Headphone gain control get value.
ALSA: hda/ca0132 - Fix AE-5 microphone selection commands.
Dinghao Liu (1):
Staging: rtl8188eu: rtw_mlme: Fix uninitialized variable authmode
Dmitry Osipenko (1):
gpio: max77620: Fix missing release of interrupt
Eric Biggers (1):
Smack: fix use-after-free in smk_write_relabel_self()
Erik Ekman (1):
USB: serial: qcserial: add EM7305 QDL product ID
Forest Crossman (2):
usb: xhci: define IDs for various ASMedia host controllers
usb: xhci: Fix ASMedia ASM1142 DMA addressing
Frank van der Linden (1):
xattr: break delegations in {set,remove}xattr
Greg Kroah-Hartman (3):
USB: iowarrior: fix up report size handling for some devices
mtd: properly check all write ioctls for permissions Linux 5.8.1
Guenter Roeck (1):
arm64: kaslr: Use standard early random function
Huacai Chen (1):
ALSA: hda/realtek: Add alc269/alc662 pin-tables for Loongson-3 laptops
Hui Wang (1):
Revert "ALSA: hda: call runtime_allow() for all hda controllers"
Jann Horn (1):
binder: Prevent context manager from incrementing ref 0
Johan Hovold (5):
leds: wm831x-status: fix use-after-free on unbind
leds: lm36274: fix use-after-free on unbind
leds: da903x: fix use-after-free on unbind
leds: lm3533: fix use-after-free on unbind
leds: 88pm860x: fix use-after-free on unbind
Kees Cook (1):
lkdtm/heap: Avoid edge and middle of slabs
Linus Torvalds (2):
random32: move the pseudo-random 32-bit definitions to prandom.h
random: random.h should include archrandom.h, not the other way around
Matthias Maennich (1):
scripts: add dummy report mode to add_namespace.cocci
Nicolas Chauvet (1):
PCI: tegra: Revert tegra124 raw_violation_fixup
Peilin Ye (3):
Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt()
Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt()
Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt()
Rustam Kovhaev (1):
staging: rtl8712: handle firmware load failure
Stanley Chu (1):
scsi: ufs: Fix and simplify setup_xfer_req variant operation
Suren Baghdasaryan (1):
staging: android: ashmem: Fix lockdep warning for write operation
Takashi Iwai (1):
ALSA: seq: oss: Serialize ioctls
Yunhai Zhang (1):
vgacon: Fix for missing check in scrollback handling
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 8 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm64/include/asm/archrandom.h +0 -1
@@ -6,7 +6,6 @@#include <linux/bug.h> #include <linux/kernel.h> -#include <linux/random.h> #include <asm/cpufeature.h> static inline bool __arm64_rndr (unsigned long *v)
arch/arm64/kernel/kaslr.c +6 -8
@@ -11,8 +11,8 @@#include <linux/sched.h> #include <linux/types.h> #include <linux/pgtable.h> +#include <linux/random.h> -#include <asm/archrandom.h> #include <asm/cacheflush.h> #include <asm/fixmap.h> #include <asm/kernel-pgtable.h>
@@ -84,6 +84,7 @@ u64 __init kaslr_early_init(u64 dt_phys)void *fdt;u64 seed, offset, mask, module_range;const u8 *cmdline, *str; +unsigned long raw;int size;/*
@@ -122,15 +123,12 @@ u64 __init kaslr_early_init(u64 dt_phys) }/* -* Mix in any entropy obtainable architecturally, open coded -* since this runs extremely early. +* Mix in any entropy obtainable architecturally if enabled +* and supported. */ -if (__early_cpu_has_rndr ()) { -unsigned long raw; -if (__arm64_rndr (&raw)) - seed ^= raw; - } +if (arch_get_random_seed_long_early (&raw)) + seed ^= raw;if (!seed) { kaslr_status =KASLR_DISABLED_NO_SEED ;
arch/powerpc/include/asm/kasan.h +2 -0
@@ -27,10 +27,12 @@#ifdef CONFIG_KASAN void kasan_early_init (void ); +void kasan_mmu_init (void );void kasan_init (void );void kasan_late_init (void );#else static inline void kasan_init (void ) { } +static inline void kasan_mmu_init (void ) { }static inline void kasan_late_init (void ) { }#endif
arch/powerpc/mm/init_32.c +2 -0
@@ -171,6 +171,8 @@ void __init MMU_init(void)btext_unmap ();#endif +kasan_mmu_init (); +setup_kup ();/* Shortly after that, the entire linear mapping will be available */
arch/powerpc/mm/kasan/kasan_init_32.c +14 -15
@@ -117,14 +117,27 @@ static void __init kasan_unmap_early_shadow_vmalloc(void)kasan_update_early_region (k_start, k_end,__pte (0 )); } -static void __init kasan_mmu_init (void ) +void __init kasan_mmu_init (void ) {int ret; + +if (early_mmu_has_feature (MMU_FTR_HPTE_TABLE ) || +IS_ENABLED (CONFIG_KASAN_VMALLOC )) { + ret =kasan_init_shadow_page_tables (KASAN_SHADOW_START ,KASAN_SHADOW_END ); + +if (ret) +panic ("kasan: kasan_init_shadow_page_tables() failed" ); + } +} + +void __init kasan_init (void ) +{struct memblock_region *reg;for_each_memblock (memory, reg) {phys_addr_t base = reg->base;phys_addr_t top =min (base + reg->size, total_lowmem); +int ret;if (base >= top)continue ;
@@ -134,20 +147,6 @@ static void __init kasan_mmu_init(void)panic ("kasan: kasan_init_region() failed" ); } -if (early_mmu_has_feature (MMU_FTR_HPTE_TABLE ) || -IS_ENABLED (CONFIG_KASAN_VMALLOC )) { - ret =kasan_init_shadow_page_tables (KASAN_SHADOW_START ,KASAN_SHADOW_END ); - -if (ret) -panic ("kasan: kasan_init_shadow_page_tables() failed" ); - } - -} - -void __init kasan_init (void ) -{ -kasan_mmu_init (); -kasan_remap_early_shadow_ro ();clear_page (kasan_early_shadow_page);
drivers/android/binder.c +14 -1
@@ -2982,6 +2982,12 @@ static void binder_transaction(struct binder_proc *proc, goto err_dead_binder; } e->to_node = target_node->debug_id; +if (WARN_ON (proc == target_proc)) { + return_error =BR_FAILED_REPLY ; + return_error_param = -EINVAL ; + return_error_line = __LINE__; + goto err_invalid_target_handle; + }if (security_binder_transaction (proc->tsk, target_proc->tsk) <0 ) { return_error =BR_FAILED_REPLY ;
@@ -3635,10 +3641,17 @@ static int binder_thread_write(struct binder_proc *proc,struct binder_node *ctx_mgr_node;mutex_lock (&context->context_mgr_node_lock); ctx_mgr_node = context->binder_context_mgr_node; -if (ctx_mgr_node) +if (ctx_mgr_node) { +if (ctx_mgr_node->proc == proc) { +binder_user_error ("%d:%d context manager tried to acquire desc 0\n" , + proc->pid, thread->pid); +mutex_unlock (&context->context_mgr_node_lock); +return -EINVAL ; + } ret =binder_inc_ref_for_node ( proc, ctx_mgr_node, strong,NULL , &rdata); + }mutex_unlock (&context->context_mgr_node_lock); }if (ret)
drivers/gpio/gpio-max77620.c +3 -2
@@ -305,8 +305,9 @@ static int max77620_gpio_probe(struct platform_device *pdev)gpiochip_irqchip_add_nested (&mgpio->gpio_chip, &max77620_gpio_irqchip,0 , handle_edge_irq,IRQ_TYPE_NONE ); - ret =request_threaded_irq (gpio_irq,NULL , max77620_gpio_irqhandler, -IRQF_ONESHOT ,"max77620-gpio" , mgpio); + ret =devm_request_threaded_irq (&pdev->dev, gpio_irq,NULL , + max77620_gpio_irqhandler,IRQF_ONESHOT , +"max77620-gpio" , mgpio);if (ret <0 ) {dev_err (&pdev->dev,"failed to request IRQ: %d\n" , ret);return ret;
drivers/leds/leds-88pm860x.c +13 -1
@@ -203,21 +203,33 @@ static int pm860x_led_probe(struct platform_device *pdev) data->cdev.brightness_set_blocking = pm860x_led_set;mutex_init (&data->lock); - ret =devm_led_classdev_register (chip->dev, &data->cdev); + ret =led_classdev_register (chip->dev, &data->cdev);if (ret <0 ) {dev_err (&pdev->dev,"Failed to register LED: %d\n" , ret);return ret; }pm860x_led_set (&data->cdev,0 ); + +platform_set_drvdata (pdev, data); +return 0 ; } +static int pm860x_led_remove (struct platform_device *pdev) +{ +struct pm860x_led *data =platform_get_drvdata (pdev); + +led_classdev_unregister (&data->cdev); + +return 0 ; +}static struct platform_driver pm860x_led_driver = { .driver = { .name ="88pm860x-led" , }, .probe = pm860x_led_probe, + .remove = pm860x_led_remove, };module_platform_driver (pm860x_led_driver);
drivers/leds/leds-da903x.c +13 -1
@@ -110,12 +110,23 @@ static int da903x_led_probe(struct platform_device *pdev) led->flags = pdata->flags; led->master = pdev->dev.parent; - ret =devm_led_classdev_register (led->master, &led->cdev); + ret =led_classdev_register (led->master, &led->cdev);if (ret) {dev_err (&pdev->dev,"failed to register LED %d\n" , id);return ret; } +platform_set_drvdata (pdev, led); + +return 0 ; +} + +static int da903x_led_remove (struct platform_device *pdev) +{ +struct da903x_led *led =platform_get_drvdata (pdev); + +led_classdev_unregister (&led->cdev); +return 0 ; }
@@ -124,6 +135,7 @@ static struct platform_driver da903x_led_driver = { .name = "da903x-led", }, .probe = da903x_led_probe, + .remove = da903x_led_remove, };module_platform_driver (da903x_led_driver);
drivers/leds/leds-lm3533.c +9 -3
@@ -694,7 +694,7 @@ static int lm3533_led_probe(struct platform_device *pdev)platform_set_drvdata (pdev, led); - ret =devm_led_classdev_register (pdev->dev.parent, &led->cdev); + ret =led_classdev_register (pdev->dev.parent, &led->cdev);if (ret) {dev_err (&pdev->dev,"failed to register LED %d\n" , pdev->id);return ret;
@@ -704,13 +704,18 @@ static int lm3533_led_probe(struct platform_device *pdev) ret =lm3533_led_setup (led, pdata);if (ret) -return ret; + goto err_deregister; ret =lm3533_ctrlbank_enable (&led->cb);if (ret) -return ret; + goto err_deregister;return 0 ; + +err_deregister: +led_classdev_unregister (&led->cdev); + +return ret; }static int lm3533_led_remove (struct platform_device *pdev)
@@ -720,6 +725,7 @@ static int lm3533_led_remove(struct platform_device *pdev)dev_dbg (&pdev->dev,"%s\n" , __func__);lm3533_ctrlbank_disable (&led->cb); +led_classdev_unregister (&led->cdev);return 0 ; }
drivers/leds/leds-lm36274.c +12 -3
@@ -133,7 +133,7 @@ static int lm36274_probe(struct platform_device *pdev) lm36274_data->pdev = pdev; lm36274_data->dev = lmu->dev; lm36274_data->regmap = lmu->regmap; -dev_set_drvdata (&pdev->dev, lm36274_data); +platform_set_drvdata (pdev, lm36274_data); ret =lm36274_parse_dt (lm36274_data);if (ret) {
@@ -147,8 +147,16 @@ static int lm36274_probe(struct platform_device *pdev)return ret; } -return devm_led_classdev_register (lm36274_data->dev, - &lm36274_data->led_dev); +return led_classdev_register (lm36274_data->dev, &lm36274_data->led_dev); +} + +static int lm36274_remove (struct platform_device *pdev) +{ +struct lm36274 *lm36274_data =platform_get_drvdata (pdev); + +led_classdev_unregister (&lm36274_data->led_dev); + +return 0 ; }static const struct of_device_id of_lm36274_leds_match[] = {
@@ -159,6 +167,7 @@ MODULE_DEVICE_TABLE(of, of_lm36274_leds_match);static struct platform_driver lm36274_driver = { .probe = lm36274_probe, + .remove = lm36274_remove, .driver = { .name ="lm36274-leds" , },
drivers/leds/leds-wm831x-status.c +13 -1
@@ -269,12 +269,23 @@ static int wm831x_status_probe(struct platform_device *pdev) drvdata->cdev.blink_set = wm831x_status_blink_set; drvdata->cdev.groups = wm831x_status_groups; - ret =devm_led_classdev_register (wm831x->dev, &drvdata->cdev); + ret =led_classdev_register (wm831x->dev, &drvdata->cdev);if (ret <0 ) {dev_err (&pdev->dev,"Failed to register LED: %d\n" , ret);return ret; } +platform_set_drvdata (pdev, drvdata); + +return 0 ; +} + +static int wm831x_status_remove (struct platform_device *pdev) +{ +struct wm831x_status *drvdata =platform_get_drvdata (pdev); + +led_classdev_unregister (&drvdata->cdev); +return 0 ; }
@@ -283,6 +294,7 @@ static struct platform_driver wm831x_status_driver = { .name = "wm831x-status", }, .probe = wm831x_status_probe, + .remove = wm831x_status_remove, };module_platform_driver (wm831x_status_driver);
drivers/misc/lkdtm/heap.c +5 -4
@@ -58,11 +58,12 @@ void lkdtm_READ_AFTER_FREE(void)int *base, *val, saw;size_t len =1024 ;/* -* The slub allocator uses the first word to store the free -* pointer in some configurations. Use the middle of the -* allocation to avoid running into the freelist +* The slub allocator will use the either the first word or +* the middle of the allocation to store the free pointer, +* depending on configurations. Store in the second word to +* avoid running into the freelist. */ -size_t offset = (len /sizeof (*base)) /2 ; +size_t offset =sizeof (*base); base =kmalloc (len,GFP_KERNEL );if (!base) {
drivers/mtd/mtdchar.c +47 -9
86 lines not on this page · raw message
drivers/pci/controller/pci-tegra.c +0 -32
@@ -181,13 +181,6 @@#define AFI_PEXBIAS_CTRL_0 0x168 -#define RP_PRIV_XP_DL 0x00000494 -#define RP_PRIV_XP_DL_GEN2_UPD_FC_TSHOLD (0x1ff << 1) - -#define RP_RX_HDR_LIMIT 0x00000e00 -#define RP_RX_HDR_LIMIT_PW_MASK (0xff << 8) -#define RP_RX_HDR_LIMIT_PW (0x0e << 8) -#define RP_ECTL_2_R1 0x00000e84#define RP_ECTL_2_R1_RX_CTLE_1C_MASK 0xffff
@@ -323,7 +316,6 @@ struct tegra_pcie_soc {bool program_uphy;bool update_clamp_threshold;bool program_deskew_time; -bool raw_violation_fixup;bool update_fc_timer;bool has_cache_bars;struct {
@@ -659,23 +651,6 @@ static void tegra_pcie_apply_sw_fixup(struct tegra_pcie_port *port)writel (value, port->base +RP_VEND_CTL0 ); } -/* Fixup for read after write violation. */ -if (soc->raw_violation_fixup) { - value =readl (port->base +RP_RX_HDR_LIMIT ); - value &= ~RP_RX_HDR_LIMIT_PW_MASK ; - value |=RP_RX_HDR_LIMIT_PW ; -writel (value, port->base +RP_RX_HDR_LIMIT ); - - value =readl (port->base +RP_PRIV_XP_DL ); - value |=RP_PRIV_XP_DL_GEN2_UPD_FC_TSHOLD ; -writel (value, port->base +RP_PRIV_XP_DL ); - - value =readl (port->base +RP_VEND_XP ); - value &= ~RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK ; - value |= soc->update_fc_threshold; -writel (value, port->base +RP_VEND_XP ); - } -if (soc->update_fc_timer) { value =readl (port->base +RP_VEND_XP ); value &= ~RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK ;
@@ -2416,7 +2391,6 @@ static const struct tegra_pcie_soc tegra20_pcie = { .program_uphy = true, .update_clamp_threshold = false, .program_deskew_time = false, - .raw_violation_fixup = false, .update_fc_timer = false, .has_cache_bars = true, .ectl.enable = false,
@@ -2446,7 +2420,6 @@ static const struct tegra_pcie_soc tegra30_pcie = { .program_uphy = true, .update_clamp_threshold = false, .program_deskew_time = false, - .raw_violation_fixup = false, .update_fc_timer = false, .has_cache_bars = false, .ectl.enable = false,
@@ -2459,8 +2432,6 @@ static const struct tegra_pcie_soc tegra124_pcie = { .pads_pll_ctl = PADS_PLL_CTL_TEGRA30, .tx_ref_sel = PADS_PLL_CTL_TXCLKREF_BUF_EN, .pads_refclk_cfg0 = 0x44ac44ac, -/* FC threshold is bit[25:18] */ - .update_fc_threshold = 0x03fc0000, .has_pex_clkreq_en = true, .has_pex_bias_ctrl = true, .has_intr_prsnt_sense = true,
@@ -2470,7 +2441,6 @@ static const struct tegra_pcie_soc tegra124_pcie = { .program_uphy = true, .update_clamp_threshold = true, .program_deskew_time = false, - .raw_violation_fixup = true, .update_fc_timer = false, .has_cache_bars = false, .ectl.enable = false,
@@ -2494,7 +2464,6 @@ static const struct tegra_pcie_soc tegra210_pcie = { .program_uphy = true, .update_clamp_threshold = true, .program_deskew_time = true, - .raw_violation_fixup = false, .update_fc_timer = true, .has_cache_bars = false, .ectl = {
@@ -2536,7 +2505,6 @@ static const struct tegra_pcie_soc tegra186_pcie = { .program_uphy = false, .update_clamp_threshold = false, .program_deskew_time = false, - .raw_violation_fixup = false, .update_fc_timer = false, .has_cache_bars = false, .ectl.enable = false,
drivers/scsi/ufs/ufshcd.c +5 -4
@@ -1925,8 +1925,11 @@ static void ufshcd_clk_scaling_update_busy(struct ufs_hba *hba)static inline void ufshcd_send_command (struct ufs_hba *hba,unsigned int task_tag) { - hba->lrb[task_tag].issue_time_stamp =ktime_get (); - hba->lrb[task_tag].compl_time_stamp =ktime_set (0 ,0 ); +struct ufshcd_lrb *lrbp = &hba->lrb[task_tag]; + + lrbp->issue_time_stamp =ktime_get (); + lrbp->compl_time_stamp =ktime_set (0 ,0 ); +ufshcd_vops_setup_xfer_req (hba, task_tag, (lrbp->cmd ? true : false));ufshcd_add_command_trace (hba, task_tag,"send" );ufshcd_clk_scaling_start_busy (hba);__set_bit (task_tag, &hba->outstanding_reqs);
@@ -2536,7 +2539,6 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)/* issue command to the controller */ spin_lock_irqsave (hba->host->host_lock, flags); -ufshcd_vops_setup_xfer_req (hba, tag, true);ufshcd_send_command (hba, tag); out_unlock:spin_unlock_irqrestore (hba->host->host_lock, flags);
@@ -2723,7 +2725,6 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,/* Make sure descriptors are ready before ringing the doorbell */ wmb ();spin_lock_irqsave (hba->host->host_lock, flags); -ufshcd_vops_setup_xfer_req (hba, tag, false);ufshcd_send_command (hba, tag);spin_unlock_irqrestore (hba->host->host_lock, flags);
drivers/staging/android/ashmem.c +12 -0
@@ -95,6 +95,15 @@ static DEFINE_MUTEX(ashmem_mutex);static struct kmem_cache *ashmem_area_cachep__read_mostly ;static struct kmem_cache *ashmem_range_cachep__read_mostly ; +/* +* A separate lockdep class for the backing shmem inodes to resolve the lockdep +* warning about the race between kswapd taking fs_reclaim before inode_lock +* and write syscall taking inode_lock and then fs_reclaim. +* Note that such race is impossible because ashmem does not support write +* syscalls operating on the backing shmem. +*/ +static struct lock_class_key backing_shmem_inode_class; +static inline unsigned long range_size (struct ashmem_range *range) {return range->pgend - range->pgstart +1 ;
@@ -396,6 +405,7 @@ static int ashmem_mmap(struct file *file, struct vm_area_struct *vma)if (!asma->file) {char *name =ASHMEM_NAME_DEF ;struct file *vmfile; +struct inode *inode;if (asma->name[ASHMEM_NAME_PREFIX_LEN ] !='\0' ) name = asma->name;
@@ -407,6 +417,8 @@ static int ashmem_mmap(struct file *file, struct vm_area_struct *vma) goto out; } vmfile->f_mode |=FMODE_LSEEK ; + inode =file_inode (vmfile); +lockdep_set_class (&inode->i_rwsem, &backing_shmem_inode_class); asma->file = vmfile;/* * override mmap operation of the vmfile so that it can't be
drivers/staging/rtl8188eu/core/rtw_mlme.c +3 -1
@@ -1729,9 +1729,11 @@ int rtw_restruct_sec_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_if ((ndisauthmode == Ndis802_11AuthModeWPA) || (ndisauthmode == Ndis802_11AuthModeWPAPSK)) authmode = _WPA_IE_ID_; -if ((ndisauthmode == Ndis802_11AuthModeWPA2) || +else if ((ndisauthmode == Ndis802_11AuthModeWPA2) || (ndisauthmode == Ndis802_11AuthModeWPA2PSK)) authmode = _WPA2_IE_ID_; +else + authmode =0x0 ;if (check_fwstate (pmlmepriv,WIFI_UNDER_WPS )) {memcpy (out_ie + ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len);
drivers/staging/rtl8712/hal_init.c +2 -1
@@ -33,7 +33,6 @@ static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context) {struct _adapter *adapter = context; -complete (&adapter->rtl8712_fw_ready);if (!firmware) {struct usb_device *udev = adapter->dvobjpriv.pusbdev;struct usb_interface *usb_intf = adapter->pusb_intf;
@@ -41,11 +40,13 @@ static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context)dev_err (&udev->dev,"r8712u: Firmware request failed\n" );usb_put_dev (udev);usb_set_intfdata (usb_intf,NULL ); +complete (&adapter->rtl8712_fw_ready);return ; } adapter->fw = firmware;/* firmware available - start netdev */ register_netdev (adapter->pnetdev); +complete (&adapter->rtl8712_fw_ready); }static const char firmware_file[] ="rtlwifi/rtl8712u.bin" ;
drivers/staging/rtl8712/usb_intf.c +8 -3
@@ -595,13 +595,17 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)if (pnetdev) {struct _adapter *padapter =netdev_priv (pnetdev); -usb_set_intfdata (pusb_intf,NULL ); -release_firmware (padapter->fw);/* never exit with a firmware callback pending */ wait_for_completion (&padapter->rtl8712_fw_ready); + pnetdev =usb_get_intfdata (pusb_intf); +usb_set_intfdata (pusb_intf,NULL ); +if (!pnetdev) + goto firmware_load_fail; +release_firmware (padapter->fw);if (drvpriv.drv_registered) padapter->surprise_removed = true; -unregister_netdev (pnetdev);/* will call netdev_close() */ +if (pnetdev->reg_state !=NETREG_UNINITIALIZED ) +unregister_netdev (pnetdev);/* will call netdev_close() */ flush_scheduled_work ();udelay (1 );/* Stop driver mlme relation timer */
@@ -614,6 +618,7 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)*/ usb_put_dev (udev); } +firmware_load_fail:/* If we didn't unplug usb dongle and remove/insert module, driver * fails on sitesurvey for the first time when device is up. * Reset usb port for sitesurvey fail issue.
drivers/usb/host/xhci-pci.c +7 -3
@@ -57,7 +57,10 @@#define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc +#define PCI_DEVICE_ID_ASMEDIA_1042_XHCI 0x1042#define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142 +#define PCI_DEVICE_ID_ASMEDIA_1142_XHCI 0x1242 +#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142static const char hcd_name[] ="xhci_hcd" ;
@@ -260,13 +263,14 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |=XHCI_LPM_SUPPORT ;if (pdev->vendor ==PCI_VENDOR_ID_ASMEDIA && - pdev->device ==0x1042 ) + pdev->device ==PCI_DEVICE_ID_ASMEDIA_1042_XHCI ) xhci->quirks |=XHCI_BROKEN_STREAMS ;if (pdev->vendor ==PCI_VENDOR_ID_ASMEDIA && - pdev->device ==0x1142 ) + pdev->device ==PCI_DEVICE_ID_ASMEDIA_1042A_XHCI ) xhci->quirks |=XHCI_TRUST_TX_LENGTH ;if (pdev->vendor ==PCI_VENDOR_ID_ASMEDIA && - pdev->device ==0x2142 ) + (pdev->device ==PCI_DEVICE_ID_ASMEDIA_1142_XHCI || + pdev->device ==PCI_DEVICE_ID_ASMEDIA_2142_XHCI )) xhci->quirks |=XHCI_NO_64BIT_SUPPORT ; if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
drivers/usb/misc/iowarrior.c +25 -10
@@ -2,8 +2,9 @@/* * Native support for the I/O-Warrior USB devices * -* Copyright (c) 2003-2005 Code Mercenaries GmbH -* written by Christian Lucht <[email protected]> +* Copyright (c) 2003-2005, 2020 Code Mercenaries GmbH +* written by Christian Lucht <[email protected]> and +* Christoph Jung <[email protected]> * * based on
@@ -802,14 +803,28 @@ static int iowarrior_probe(struct usb_interface *interface,/* we have to check the report_size often, so remember it in the endianness suitable for our machine */ dev->report_size =usb_endpoint_maxp (dev->int_in_endpoint); -if ((dev->interface->cur_altsetting->desc.bInterfaceNumber ==0 ) && - ((dev->product_id ==USB_DEVICE_ID_CODEMERCS_IOW56 ) || - (dev->product_id ==USB_DEVICE_ID_CODEMERCS_IOW56AM ) || - (dev->product_id ==USB_DEVICE_ID_CODEMERCS_IOW28 ) || - (dev->product_id ==USB_DEVICE_ID_CODEMERCS_IOW28L ) || - (dev->product_id ==USB_DEVICE_ID_CODEMERCS_IOW100 ))) -/* IOWarrior56 has wMaxPacketSize different from report size */ - dev->report_size =7 ; + +/* +* Some devices need the report size to be different than the +* endpoint size. +*/ +if (dev->interface->cur_altsetting->desc.bInterfaceNumber ==0 ) { +switch (dev->product_id) { +case USB_DEVICE_ID_CODEMERCS_IOW56 : +case USB_DEVICE_ID_CODEMERCS_IOW56AM : + dev->report_size =7 ; +break ; + +case USB_DEVICE_ID_CODEMERCS_IOW28 : +case USB_DEVICE_ID_CODEMERCS_IOW28L : + dev->report_size =4 ; +break ; + +case USB_DEVICE_ID_CODEMERCS_IOW100 : + dev->report_size =13 ; +break ; + } + }/* create the urb and buffer for reading */ dev->int_in_urb =usb_alloc_urb (0 ,GFP_KERNEL );
drivers/usb/serial/qcserial.c +1 -0
@@ -155,6 +155,7 @@ static const struct usb_device_id id_table[] = { {DEVICE_SWI(0x1199, 0x9056)}, /* Sierra Wireless Modem */ {DEVICE_SWI(0x1199, 0x9060)}, /* Sierra Wireless Modem */ {DEVICE_SWI(0x1199, 0x9061)}, /* Sierra Wireless Modem */ + {DEVICE_SWI(0x1199, 0x9062)}, /* Sierra Wireless EM7305 QDL */ {DEVICE_SWI(0x1199, 0x9063)}, /* Sierra Wireless EM7305 */ {DEVICE_SWI(0x1199, 0x9070)}, /* Sierra Wireless MC74xx */ {DEVICE_SWI(0x1199, 0x9071)}, /* Sierra Wireless MC74xx */
drivers/video/console/vgacon.c +4 -0
@@ -251,6 +251,10 @@ static void vgacon_scrollback_update(struct vc_data *c, int t, int count) p = (void *) (c->vc_origin + t * c->vc_size_row);while (count--) { +if ((vgacon_scrollback_cur->tail + c->vc_size_row) > + vgacon_scrollback_cur->size) + vgacon_scrollback_cur->tail =0 ; +scr_memcpyw (vgacon_scrollback_cur->data + vgacon_scrollback_cur->tail, p, c->vc_size_row);
drivers/video/fbdev/omap2/omapfb/dss/dss.c +1 -1
@@ -833,7 +833,7 @@ static const struct dss_features omap34xx_dss_feats = { };static const struct dss_features omap3630_dss_feats = { - .fck_div_max =32 , + .fck_div_max =31 , .dss_fck_multiplier =1 , .parent_clk_name ="dpll4_ck" , .dpi_select_source = &dss_dpi_select_source_omap2_omap3,
fs/xattr.c +77 -7
133 lines not on this page · raw message
include/linux/prandom.h new file +78 -0
78 lines not on this page · raw message
include/linux/random.h +4 -62
84 lines not on this page · raw message
include/linux/xattr.h +2 -0
@@ -52,8 +52,10 @@ ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t);ssize_t vfs_listxattr (struct dentry *d,char *list,size_t size);int __vfs_setxattr (struct dentry *,struct inode *,const char *,const void *,size_t ,int );int __vfs_setxattr_noperm (struct dentry *,const char *,const void *,size_t ,int ); +int __vfs_setxattr_locked (struct dentry *,const char *,const void *,size_t ,int ,struct inode **);int vfs_setxattr (struct dentry *,const char *,const void *,size_t ,int );int __vfs_removexattr (struct dentry *,const char *); +int __vfs_removexattr_locked (struct dentry *,const char *,struct inode **);int vfs_removexattr (struct dentry *,const char *);ssize_t generic_listxattr (struct dentry *dentry,char *buffer,size_t buffer_size);
net/bluetooth/hci_event.c +9 -2
@@ -2520,7 +2520,7 @@ static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb)BT_DBG ("%s num_rsp %d" , hdev->name, num_rsp); -if (!num_rsp) +if (!num_rsp || skb->len < num_rsp *sizeof (*info) +1 )return ;if (hci_dev_test_flag (hdev,HCI_PERIODIC_INQ ))
@@ -4166,6 +4166,9 @@ static void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev,struct inquiry_info_with_rssi_and_pscan_mode *info; info = (void *) (skb->data +1 ); +if (skb->len < num_rsp *sizeof (*info) +1 ) + goto unlock; +for (; num_rsp; num_rsp--, info++) {u32 flags;
@@ -4187,6 +4190,9 @@ static void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, }else {struct inquiry_info_with_rssi *info = (void *) (skb->data +1 ); +if (skb->len < num_rsp *sizeof (*info) +1 ) + goto unlock; +for (; num_rsp; num_rsp--, info++) {u32 flags;
@@ -4207,6 +4213,7 @@ static void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, } } +unlock:hci_dev_unlock (hdev); }
@@ -4382,7 +4389,7 @@ static void hci_extended_inquiry_result_evt(struct hci_dev *hdev,BT_DBG ("%s num_rsp %d" , hdev->name, num_rsp); -if (!num_rsp) +if (!num_rsp || skb->len < num_rsp *sizeof (*info) +1 )return ;if (hci_dev_test_flag (hdev,HCI_PERIODIC_INQ ))
scripts/coccinelle/misc/add_namespace.cocci +7 -1
@@ -6,6 +6,7 @@ /// add a missing namespace tag to a module source file. /// +virtual nsdeps virtual report @has_ns_import@
@@ -16,10 +17,15 @@ MODULE_IMPORT_NS(ns); // Add missing imports, but only adjacent to a MODULE_LICENSE statement. // That ensures we are adding it only to the main module source file. -@do_import depends on !has_ns_import@ +@do_import depends on !has_ns_import && nsdeps@ declarer name MODULE_LICENSE; expression license; identifier virtual.ns; @@ MODULE_LICENSE(license); + MODULE_IMPORT_NS(ns); + +// Dummy rule for report mode that would otherwise be empty and make spatch +// fail ("No rules apply.") +@script:python depends on report@ +@@
scripts/nsdeps +1 -1
@@ -29,7 +29,7 @@ fi generate_deps_for_ns() { $SPATCH --very-quiet --in-place --sp-file \ - $srctree/scripts/coccinelle/misc/add_namespace.cocci -D ns=$1 $2 + $srctree/scripts/coccinelle/misc/add_namespace.cocci -D nsdeps -D ns=$1 $2 } generate_deps() {
security/integrity/ima/Kconfig +1 -1
@@ -232,7 +232,7 @@ config IMA_APPRAISE_REQUIRE_POLICY_SIGS config IMA_APPRAISE_BOOTPARAM bool "ima_appraise boot parameter" - depends on IMA_APPRAISE && !IMA_ARCH_POLICY + depends on IMA_APPRAISE default y help This option enables the different "ima_appraise=" modes
security/integrity/ima/ima_appraise.c +6 -0
@@ -19,6 +19,12 @@static int __init default_appraise_setup (char *str) {#ifdef CONFIG_IMA_APPRAISE_BOOTPARAM +if (arch_ima_get_secureboot ()) { +pr_info ("Secure boot enabled: ignoring ima_appraise=%s boot parameter option" , + str); +return 1 ; + } +if (strncmp (str,"off" ,3 ) ==0 ) ima_appraise =0 ;else if (strncmp (str,"log" ,3 ) ==0 )
security/smack/smackfs.c +11 -2
@@ -2720,7 +2720,6 @@ static int smk_open_relabel_self(struct inode *inode, struct file *file)static ssize_t smk_write_relabel_self (struct file *file,const char __user *buf,size_t count,loff_t *ppos) { -struct task_smack *tsp =smack_cred (current_cred ());char *data;int rc;LIST_HEAD (list_tmp);
@@ -2745,11 +2744,21 @@ static ssize_t smk_write_relabel_self(struct file *file, const char __user *buf,kfree (data);if (!rc || (rc == -EINVAL &&list_empty (&list_tmp))) { +struct cred *new; +struct task_smack *tsp; + + new =prepare_creds (); +if (!new) { + rc = -ENOMEM ; + goto out; + } + tsp =smack_cred (new);smk_destroy_label_list (&tsp->smk_relabel);list_splice (&list_tmp, &tsp->smk_relabel); +commit_creds (new);return count; } - +out:smk_destroy_label_list (&list_tmp);return rc; }
sound/core/seq/oss/seq_oss.c +7 -1
@@ -168,10 +168,16 @@ static long odev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct seq_oss_devinfo *dp; +long rc; + dp = file->private_data;if (snd_BUG_ON (!dp))return -ENXIO ; -return snd_seq_oss_ioctl (dp, cmd, arg); + +mutex_lock (®ister_mutex); + rc =snd_seq_oss_ioctl (dp, cmd, arg); +mutex_unlock (®ister_mutex); +return rc; }#ifdef CONFIG_COMPAT
sound/pci/hda/hda_intel.c +0 -1
@@ -2354,7 +2354,6 @@ static int azx_probe_continue(struct azx *chip)if (azx_has_pm_runtime (chip)) {pm_runtime_use_autosuspend (&pci->dev); -pm_runtime_allow (&pci->dev);pm_runtime_put_autosuspend (&pci->dev); }
sound/pci/hda/patch_ca0132.c +9 -3
@@ -1182,6 +1182,7 @@ static const struct snd_pci_quirk ca0132_quirks[] = {SND_PCI_QUIRK (0x1458 ,0xA036 ,"Gigabyte GA-Z170X-Gaming 7" ,QUIRK_R3DI ),SND_PCI_QUIRK (0x3842 ,0x1038 ,"EVGA X99 Classified" ,QUIRK_R3DI ),SND_PCI_QUIRK (0x1102 ,0x0013 ,"Recon3D" ,QUIRK_R3D ), +SND_PCI_QUIRK (0x1102 ,0x0018 ,"Recon3D" ,QUIRK_R3D ), SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5), {} };
@@ -4671,7 +4672,7 @@ static int ca0132_alt_select_in(struct hda_codec *codec) tmp =FLOAT_ONE ;break ;case QUIRK_AE5 : -ca0113_mmio_command_set (codec,0x48 ,0x28 ,0x00 ); +ca0113_mmio_command_set (codec,0x30 ,0x28 ,0x00 ); tmp =FLOAT_THREE ;break ;default :
@@ -4717,7 +4718,7 @@ static int ca0132_alt_select_in(struct hda_codec *codec)r3di_gpio_mic_set (codec,R3DI_REAR_MIC );break ;case QUIRK_AE5 : -ca0113_mmio_command_set (codec,0x48 ,0x28 ,0x00 ); +ca0113_mmio_command_set (codec,0x30 ,0x28 ,0x00 );break ;default :break ;
@@ -4756,7 +4757,7 @@ static int ca0132_alt_select_in(struct hda_codec *codec) tmp =FLOAT_ONE ;break ;case QUIRK_AE5 : -ca0113_mmio_command_set (codec,0x48 ,0x28 ,0x3f ); +ca0113_mmio_command_set (codec,0x30 ,0x28 ,0x3f ); tmp =FLOAT_THREE ;break ;default :
@@ -5748,6 +5749,11 @@ static int ca0132_switch_get(struct snd_kcontrol *kcontrol,return 0 ; } +if (nid ==ZXR_HEADPHONE_GAIN ) { + *valp = spec->zxr_gain_set; +return 0 ; + } +return 0 ; }
sound/pci/hda/patch_realtek.c +114 -0
153 lines not on this page · raw message