From 7c30c1bd1fc8b3c2395780fbff67689e2649ed52 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 13 Oct 2022 15:22:47 +0200 Subject: [PATCH] 4.14-stable patches added patches: alsa-hda-fix-position-reporting-on-poulsbo.patch random-clamp-credited-irq-bits-to-maximum-mixed.patch random-restore-o_nonblock-support.patch scsi-stex-properly-zero-out-the-passthrough-command-structure.patch usb-serial-qcserial-add-new-usb-id-for-dell-branded-em7455.patch --- ...da-fix-position-reporting-on-poulsbo.patch | 40 +++++++++++ ...p-credited-irq-bits-to-maximum-mixed.patch | 31 +++++++++ .../random-restore-o_nonblock-support.patch | 65 ++++++++++++++++++ ...ut-the-passthrough-command-structure.patch | 68 +++++++++++++++++++ queue-4.14/series | 5 ++ ...d-new-usb-id-for-dell-branded-em7455.patch | 29 ++++++++ 6 files changed, 238 insertions(+) create mode 100644 queue-4.14/alsa-hda-fix-position-reporting-on-poulsbo.patch create mode 100644 queue-4.14/random-clamp-credited-irq-bits-to-maximum-mixed.patch create mode 100644 queue-4.14/random-restore-o_nonblock-support.patch create mode 100644 queue-4.14/scsi-stex-properly-zero-out-the-passthrough-command-structure.patch create mode 100644 queue-4.14/usb-serial-qcserial-add-new-usb-id-for-dell-branded-em7455.patch diff --git a/queue-4.14/alsa-hda-fix-position-reporting-on-poulsbo.patch b/queue-4.14/alsa-hda-fix-position-reporting-on-poulsbo.patch new file mode 100644 index 00000000000..9bc0837a46b --- /dev/null +++ b/queue-4.14/alsa-hda-fix-position-reporting-on-poulsbo.patch @@ -0,0 +1,40 @@ +From 56e696c0f0c71b77fff921fc94b58a02f0445b2c Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Sat, 1 Oct 2022 16:21:24 +0200 +Subject: ALSA: hda: Fix position reporting on Poulsbo + +From: Takashi Iwai + +commit 56e696c0f0c71b77fff921fc94b58a02f0445b2c upstream. + +Hans reported that his Sony VAIO VPX11S1E showed the broken sound +behavior at the start of the stream for a couple of seconds, and it +turned out that the position_fix=1 option fixes the issue. It implies +that the position reporting is inaccurate, and very likely hitting on +all Poulsbo devices. + +The patch applies the workaround for Poulsbo generically to switch to +LPIB mode instead of the default position buffer. + +Reported-and-tested-by: Hans de Goede +Cc: +Link: https://lore.kernel.org/r/3e8697e1-87c6-7a7b-d2e8-b21f1d2f181b@redhat.com +Link: https://lore.kernel.org/r/20221001142124.7241-1-tiwai@suse.de +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/hda_intel.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -2571,7 +2571,8 @@ static const struct pci_device_id azx_id + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM }, + /* Poulsbo */ + { PCI_DEVICE(0x8086, 0x811b), +- .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE }, ++ .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE | ++ AZX_DCAPS_POSFIX_LPIB }, + /* Oaktrail */ + { PCI_DEVICE(0x8086, 0x080a), + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE }, diff --git a/queue-4.14/random-clamp-credited-irq-bits-to-maximum-mixed.patch b/queue-4.14/random-clamp-credited-irq-bits-to-maximum-mixed.patch new file mode 100644 index 00000000000..cd034b6aa39 --- /dev/null +++ b/queue-4.14/random-clamp-credited-irq-bits-to-maximum-mixed.patch @@ -0,0 +1,31 @@ +From e78a802a7b4febf53f2a92842f494b01062d85a8 Mon Sep 17 00:00:00 2001 +From: "Jason A. Donenfeld" +Date: Fri, 23 Sep 2022 02:42:51 +0200 +Subject: random: clamp credited irq bits to maximum mixed + +From: Jason A. Donenfeld + +commit e78a802a7b4febf53f2a92842f494b01062d85a8 upstream. + +Since the most that's mixed into the pool is sizeof(long)*2, don't +credit more than that many bytes of entropy. + +Fixes: e3e33fc2ea7f ("random: do not use input pool from hard IRQs") +Cc: stable@vger.kernel.org +Signed-off-by: Jason A. Donenfeld +Signed-off-by: Greg Kroah-Hartman +--- + drivers/char/random.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -976,7 +976,7 @@ static void mix_interrupt_randomness(str + local_irq_enable(); + + mix_pool_bytes(pool, sizeof(pool)); +- credit_init_bits(max(1u, (count & U16_MAX) / 64)); ++ credit_init_bits(clamp_t(unsigned int, (count & U16_MAX) / 64, 1, sizeof(pool) * 8)); + + memzero_explicit(pool, sizeof(pool)); + } diff --git a/queue-4.14/random-restore-o_nonblock-support.patch b/queue-4.14/random-restore-o_nonblock-support.patch new file mode 100644 index 00000000000..96f1258fccb --- /dev/null +++ b/queue-4.14/random-restore-o_nonblock-support.patch @@ -0,0 +1,65 @@ +From cd4f24ae9404fd31fc461066e57889be3b68641b Mon Sep 17 00:00:00 2001 +From: "Jason A. Donenfeld" +Date: Thu, 8 Sep 2022 16:14:00 +0200 +Subject: random: restore O_NONBLOCK support + +From: Jason A. Donenfeld + +commit cd4f24ae9404fd31fc461066e57889be3b68641b upstream. + +Prior to 5.6, when /dev/random was opened with O_NONBLOCK, it would +return -EAGAIN if there was no entropy. When the pools were unified in +5.6, this was lost. The post 5.6 behavior of blocking until the pool is +initialized, and ignoring O_NONBLOCK in the process, went unnoticed, +with no reports about the regression received for two and a half years. +However, eventually this indeed did break somebody's userspace. + +So we restore the old behavior, by returning -EAGAIN if the pool is not +initialized. Unlike the old /dev/random, this can only occur during +early boot, after which it never blocks again. + +In order to make this O_NONBLOCK behavior consistent with other +expectations, also respect users reading with preadv2(RWF_NOWAIT) and +similar. + +Fixes: 30c08efec888 ("random: make /dev/random be almost like /dev/urandom") +Reported-by: Guozihua +Reported-by: Zhongguohua +Cc: Al Viro +Cc: Theodore Ts'o +Cc: Andrew Lutomirski +Cc: stable@vger.kernel.org +Signed-off-by: Jason A. Donenfeld +Signed-off-by: Greg Kroah-Hartman +--- + drivers/char/mem.c | 4 ++-- + drivers/char/random.c | 5 +++++ + 2 files changed, 7 insertions(+), 2 deletions(-) + +--- a/drivers/char/mem.c ++++ b/drivers/char/mem.c +@@ -887,8 +887,8 @@ static const struct memdev { + #endif + [5] = { "zero", 0666, &zero_fops, 0 }, + [7] = { "full", 0666, &full_fops, 0 }, +- [8] = { "random", 0666, &random_fops, 0 }, +- [9] = { "urandom", 0666, &urandom_fops, 0 }, ++ [8] = { "random", 0666, &random_fops, FMODE_NOWAIT }, ++ [9] = { "urandom", 0666, &urandom_fops, FMODE_NOWAIT }, + #ifdef CONFIG_PRINTK + [11] = { "kmsg", 0644, &kmsg_fops, 0 }, + #endif +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -1294,6 +1294,11 @@ static ssize_t random_read_iter(struct k + { + int ret; + ++ if (!crng_ready() && ++ ((kiocb->ki_flags & (IOCB_NOWAIT | IOCB_NOIO)) || ++ (kiocb->ki_filp->f_flags & O_NONBLOCK))) ++ return -EAGAIN; ++ + ret = wait_for_random_bytes(); + if (ret != 0) + return ret; diff --git a/queue-4.14/scsi-stex-properly-zero-out-the-passthrough-command-structure.patch b/queue-4.14/scsi-stex-properly-zero-out-the-passthrough-command-structure.patch new file mode 100644 index 00000000000..d25d2ece87d --- /dev/null +++ b/queue-4.14/scsi-stex-properly-zero-out-the-passthrough-command-structure.patch @@ -0,0 +1,68 @@ +From 6022f210461fef67e6e676fd8544ca02d1bcfa7a Mon Sep 17 00:00:00 2001 +From: Linus Torvalds +Date: Fri, 9 Sep 2022 08:54:47 +0200 +Subject: scsi: stex: Properly zero out the passthrough command structure + +From: Linus Torvalds + +commit 6022f210461fef67e6e676fd8544ca02d1bcfa7a upstream. + +The passthrough structure is declared off of the stack, so it needs to be +set to zero before copied back to userspace to prevent any unintentional +data leakage. Switch things to be statically allocated which will fill the +unused fields with 0 automatically. + +Link: https://lore.kernel.org/r/YxrjN3OOw2HHl9tx@kroah.com +Cc: stable@kernel.org +Cc: "James E.J. Bottomley" +Cc: "Martin K. Petersen" +Cc: Dan Carpenter +Reported-by: hdthky +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/stex.c | 17 +++++++++-------- + include/scsi/scsi_cmnd.h | 2 +- + 2 files changed, 10 insertions(+), 9 deletions(-) + +--- a/drivers/scsi/stex.c ++++ b/drivers/scsi/stex.c +@@ -673,16 +673,17 @@ stex_queuecommand_lck(struct scsi_cmnd * + return 0; + case PASSTHRU_CMD: + if (cmd->cmnd[1] == PASSTHRU_GET_DRVVER) { +- struct st_drvver ver; ++ const struct st_drvver ver = { ++ .major = ST_VER_MAJOR, ++ .minor = ST_VER_MINOR, ++ .oem = ST_OEM, ++ .build = ST_BUILD_VER, ++ .signature[0] = PASSTHRU_SIGNATURE, ++ .console_id = host->max_id - 1, ++ .host_no = hba->host->host_no, ++ }; + size_t cp_len = sizeof(ver); + +- ver.major = ST_VER_MAJOR; +- ver.minor = ST_VER_MINOR; +- ver.oem = ST_OEM; +- ver.build = ST_BUILD_VER; +- ver.signature[0] = PASSTHRU_SIGNATURE; +- ver.console_id = host->max_id - 1; +- ver.host_no = hba->host->host_no; + cp_len = scsi_sg_copy_from_buffer(cmd, &ver, cp_len); + cmd->result = sizeof(ver) == cp_len ? + DID_OK << 16 | COMMAND_COMPLETE << 8 : +--- a/include/scsi/scsi_cmnd.h ++++ b/include/scsi/scsi_cmnd.h +@@ -225,7 +225,7 @@ static inline struct scsi_data_buffer *s + } + + static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd, +- void *buf, int buflen) ++ const void *buf, int buflen) + { + return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd), + buf, buflen); diff --git a/queue-4.14/series b/queue-4.14/series index 6bfb533e6e5..9f6b49abed5 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -37,3 +37,8 @@ nilfs2-fix-null-pointer-dereference-at-nilfs_bmap_lookup_at_level.patch nilfs2-fix-leak-of-nilfs_root-in-case-of-writer-thread-creation-failure.patch nilfs2-replace-warn_ons-by-nilfs_error-for-checkpoint-acquisition-failure.patch ceph-don-t-truncate-file-in-atomic_open.patch +random-restore-o_nonblock-support.patch +random-clamp-credited-irq-bits-to-maximum-mixed.patch +alsa-hda-fix-position-reporting-on-poulsbo.patch +scsi-stex-properly-zero-out-the-passthrough-command-structure.patch +usb-serial-qcserial-add-new-usb-id-for-dell-branded-em7455.patch diff --git a/queue-4.14/usb-serial-qcserial-add-new-usb-id-for-dell-branded-em7455.patch b/queue-4.14/usb-serial-qcserial-add-new-usb-id-for-dell-branded-em7455.patch new file mode 100644 index 00000000000..5ea26bd421e --- /dev/null +++ b/queue-4.14/usb-serial-qcserial-add-new-usb-id-for-dell-branded-em7455.patch @@ -0,0 +1,29 @@ +From eee48781ea199e32c1d0c4732641c494833788ca Mon Sep 17 00:00:00 2001 +From: Frank Wunderlich +Date: Mon, 26 Sep 2022 17:07:39 +0200 +Subject: USB: serial: qcserial: add new usb-id for Dell branded EM7455 + +From: Frank Wunderlich + +commit eee48781ea199e32c1d0c4732641c494833788ca upstream. + +Add support for Dell 5811e (EM7455) with USB-id 0x413c:0x81c2. + +Signed-off-by: Frank Wunderlich +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/qcserial.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/qcserial.c ++++ b/drivers/usb/serial/qcserial.c +@@ -181,6 +181,7 @@ static const struct usb_device_id id_tab + {DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ + {DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */ + {DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */ ++ {DEVICE_SWI(0x413c, 0x81c2)}, /* Dell Wireless 5811e */ + {DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */ + {DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */ + {DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */ -- 2.47.3