Linux 5.4.154
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.154 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 arch/m68k/kernel/signal.c | 88 ++++++++--------- drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 3 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 drivers/hid/hid-apple.c | 7 + drivers/hid/wacom_wac.c | 8 + drivers/net/ethernet/sun/Kconfig | 1 drivers/net/phy/bcm7xxx.c | 114 +++++++++++++++++++++- drivers/scsi/ses.c | 2 drivers/scsi/virtio_scsi.c | 4 fs/ext4/inline.c | 15 -- fs/ext4/inode.c | 7 - include/linux/sched.h | 2 include/net/pkt_sched.h | 1 net/ipv6/netfilter/ip6_tables.c | 1 net/mac80211/mesh_pathtbl.c | 5 net/mac80211/rx.c | 3 net/netfilter/nf_nat_masquerade.c | 168 +++++++++++++++++++-------------- net/sched/sch_api.c | 6 + 19 files changed, 298 insertions(+), 142 deletions(-)
Al Viro (1):
m68k: Handle arrivals of multiple signals correctly
Colin Ian King (1):
scsi: virtio_scsi: Fix spelling mistake "Unsupport" -> "Unsupported"
Florian Fainelli (1):
net: phy: bcm7xxx: Fixed indirect MMD operations
Florian Westphal (2):
netfilter: nf_nat_masquerade: make async masq_inet6_event handling generic
netfilter: nf_nat_masquerade: defer conntrack walk to work queue
Greg Kroah-Hartman (1):
Linux 5.4.154
Jeremy Sowden (1):
netfilter: ip6_tables: zero-initialize fragment offset
Jiapeng Chong (1):
scsi: ses: Fix unsigned comparison with less than zero
Joshua-Dickens (1):
HID: wacom: Add new Intuos BT (CTL-4100WL/CTL-6100WL) device IDs
Leslie Shi (1):
drm/amdgpu: fix gart.bo pin_count leak
MichelleJin (1):
mac80211: check return value of rhashtable_init
Mizuho Mori (1):
HID: apple: Fix logical maximum and usage maximum of Magic Keyboard JIS
Peter Zijlstra (1):
sched: Always inline is_percpu_thread()
Randy Dunlap (1):
net: sun: SUNVNET_COMMON should depend on INET
YueHaibing (1):
mac80211: Drop frames from invalid MAC address in ad-hoc mode
Zhang Yi (1):
ext4: correct the error path of ext4_write_inline_data_end()
王贇 (1):
net: prevent user from passing illegal stab size
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 153 +SUBLEVEL = 154 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/m68k/kernel/signal.c +42 -46
184 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c +2 -1
@@ -903,6 +903,8 @@ static int gmc_v10_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +gmc_v10_0_gart_disable (adev); +if (amdgpu_sriov_vf (adev)) {/* full access mode, so don't touch any GMC register */ DRM_DEBUG ("For SRIOV client, shouldn't do anything.\n" );
@@ -910,7 +912,6 @@ static int gmc_v10_0_hw_fini(void *handle) }amdgpu_irq_put (adev, &adev->gmc.vm_fault,0 ); -gmc_v10_0_gart_disable (adev);return 0 ; }
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +2 -1
@@ -1526,6 +1526,8 @@ static int gmc_v9_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +gmc_v9_0_gart_disable (adev); +if (amdgpu_sriov_vf (adev)) {/* full access mode, so don't touch any GMC register */ DRM_DEBUG ("For SRIOV client, shouldn't do anything.\n" );
@@ -1534,7 +1536,6 @@ static int gmc_v9_0_hw_fini(void *handle)amdgpu_irq_put (adev, &adev->gmc.ecc_irq,0 );amdgpu_irq_put (adev, &adev->gmc.vm_fault,0 ); -gmc_v9_0_gart_disable (adev);return 0 ; }
drivers/hid/hid-apple.c +7 -0
@@ -301,12 +301,19 @@ static int apple_event(struct hid_device *hdev, struct hid_field *field,/* * MacBook JIS keyboard has wrong logical maximum +* Magic Keyboard JIS has wrong logical maximum */ static __u8 *apple_report_fixup (struct hid_device *hdev,__u8 *rdesc,unsigned int *rsize) {struct apple_sc *asc =hid_get_drvdata (hdev); +if (*rsize >=71 && rdesc[70 ] ==0x65 && rdesc[64 ] ==0x65 ) { +hid_info (hdev, +"fixing up Magic Keyboard JIS report descriptor\n" ); + rdesc[64 ] = rdesc[70 ] =0xe7 ; + } +if ((asc->quirks &APPLE_RDESC_JIS ) && *rsize >=60 && rdesc[53 ] ==0x65 && rdesc[59 ] ==0x65 ) { hid_info(hdev,
drivers/hid/wacom_wac.c +8 -0
@@ -4715,6 +4715,12 @@ static const struct wacom_features wacom_features_0x393 = {"Wacom Intuos Pro S" ,31920 ,19950 ,8191 ,63 ,INTUOSP2S_BT ,WACOM_INTUOS3_RES ,WACOM_INTUOS3_RES ,7 , .touch_max = 10 }; +static const struct wacom_features wacom_features_0x3c6 = + {"Wacom Intuos BT S" ,15200 ,9500 ,4095 ,63 , +INTUOSHT3_BT ,WACOM_INTUOS_RES ,WACOM_INTUOS_RES ,4 }; +static const struct wacom_features wacom_features_0x3c8 = + {"Wacom Intuos BT M" ,21600 ,13500 ,4095 ,63 , +INTUOSHT3_BT ,WACOM_INTUOS_RES ,WACOM_INTUOS_RES ,4 };static const struct wacom_features wacom_features_HID_ANY_ID = {"Wacom HID" , .type =HID_GENERIC , .oVid =HID_ANY_ID , .oPid =HID_ANY_ID };
@@ -4888,6 +4894,8 @@ const struct hid_device_id wacom_ids[] = { { USB_DEVICE_WACOM(0x37A) }, { USB_DEVICE_WACOM(0x37B) }, { BT_DEVICE_WACOM(0x393) }, + { BT_DEVICE_WACOM(0x3c6) }, + { BT_DEVICE_WACOM(0x3c8) }, { USB_DEVICE_WACOM(0x4001) }, { USB_DEVICE_WACOM(0x4004) }, { USB_DEVICE_WACOM(0x5000) },
drivers/net/ethernet/sun/Kconfig +1 -0
@@ -73,6 +73,7 @@ config CASSINI config SUNVNET_COMMON tristate "Common routines to support Sun Virtual Networking" depends on SUN_LDOMS + depends on INET default m config SUNVNET
drivers/net/phy/bcm7xxx.c +110 -4
154 lines not on this page · raw message
drivers/scsi/ses.c +1 -1
@@ -118,7 +118,7 @@ static int ses_recv_diag(struct scsi_device *sdev, int page_code,static int ses_send_diag (struct scsi_device *sdev,int page_code,void *buf,int bufflen) { -u32 result; +int result;unsigned char cmd[] = {SEND_DIAGNOSTIC ,
drivers/scsi/virtio_scsi.c +2 -2
@@ -297,7 +297,7 @@ static void virtscsi_handle_transport_reset(struct virtio_scsi *vscsi, }break ;default : -pr_info ("Unsupport virtio scsi event reason %x\n" , event->reason); +pr_info ("Unsupported virtio scsi event reason %x\n" , event->reason); } }
@@ -381,7 +381,7 @@ static void virtscsi_handle_event(struct work_struct *work)virtscsi_handle_param_change (vscsi, event);break ;default : -pr_err ("Unsupport virtio scsi event %x\n" , event->event); +pr_err ("Unsupported virtio scsi event %x\n" , event->event); }virtscsi_kick_event (vscsi, event_node); }
fs/ext4/inline.c +5 -10
@@ -733,18 +733,13 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,void *kaddr;struct ext4_iloc iloc; -if (unlikely (copied < len)) { -if (!PageUptodate (page)) { - copied =0 ; - goto out; - } - } +if (unlikely (copied < len) && !PageUptodate (page)) +return 0 ; ret =ext4_get_inode_loc (inode, &iloc);if (ret) {ext4_std_error (inode->i_sb, ret); - copied =0 ; - goto out; +return ret; }ext4_write_lock_xattr (inode, &no_expand);
@@ -757,7 +752,7 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len, (void )ext4_find_inline_data_nolock (inode); kaddr =kmap_atomic (page); -ext4_write_inline_data (inode, &iloc, kaddr, pos, len); +ext4_write_inline_data (inode, &iloc, kaddr, pos, copied);kunmap_atomic (kaddr);SetPageUptodate (page);/* clear page dirty so that writepages wouldn't work for us. */
@@ -766,7 +761,7 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,ext4_write_unlock_xattr (inode, &no_expand);brelse (iloc.bh);mark_inode_dirty (inode); -out: +return copied; }
fs/ext4/inode.c +5 -2
@@ -1439,6 +1439,7 @@ static int ext4_write_end(struct file *file, goto errout; } copied = ret; + ret =0 ; }else copied =block_write_end (file, mapping, pos, len, copied, page, fsdata);
@@ -1465,13 +1466,14 @@ static int ext4_write_end(struct file *file,if (i_size_changed || inline_data)ext4_mark_inode_dirty (handle, inode); +errout:if (pos + len > inode->i_size && !verity &&ext4_can_truncate (inode))/* if we have allocated more blocks and copied * less. We will have blocks allocated outside * inode->i_size. So truncate them */ ext4_orphan_add (handle, inode); -errout: + ret2 =ext4_journal_stop (handle);if (!ret) ret = ret2;
@@ -1554,6 +1556,7 @@ static int ext4_journalled_write_end(struct file *file, goto errout; } copied = ret; + ret =0 ; }else if (unlikely (copied < len) && !PageUptodate (page)) { copied =0 ;ext4_journalled_zero_new_buffers (handle, page, from, to);
@@ -1583,6 +1586,7 @@ static int ext4_journalled_write_end(struct file *file, ret = ret2; } +errout:if (pos + len > inode->i_size && !verity &&ext4_can_truncate (inode))/* if we have allocated more blocks and copied * less. We will have blocks allocated outside
@@ -1590,7 +1594,6 @@ static int ext4_journalled_write_end(struct file *file,*/ ext4_orphan_add (handle, inode); -errout: ret2 =ext4_journal_stop (handle);if (!ret) ret = ret2;
include/linux/sched.h +1 -1
@@ -1500,7 +1500,7 @@ extern struct pid *cad_pid;#define tsk_used_math (p) ((p)->flags & PF_USED_MATH)#define used_math () tsk_used_math(current) -static inline bool is_percpu_thread (void ) +static __always_inline bool is_percpu_thread(void) {#ifdef CONFIG_SMP return (current->flags & PF_NO_SETAFFINITY) &&
include/net/pkt_sched.h +1 -0
@@ -11,6 +11,7 @@#include <uapi/linux/pkt_sched.h> #define DEFAULT_TX_QUEUE_LEN 1000 +#define STAB_SIZE_LOG_MAX 30struct qdisc_walker {int stop;
net/ipv6/netfilter/ip6_tables.c +1 -0
@@ -273,6 +273,7 @@ ip6t_do_table(struct sk_buff *skb,* things we don't know, ie. tcp syn flag or ports). If the * rule is also a fragment-specific rule, non-fragments won't * match it. */ + acpar.fragoff =0 ; acpar.hotdrop = false; acpar.state = state;
net/mac80211/mesh_pathtbl.c +4 -1
@@ -60,7 +60,10 @@ static struct mesh_table *mesh_table_alloc(void)atomic_set (&newtbl->entries,0 );spin_lock_init (&newtbl->gates_lock);spin_lock_init (&newtbl->walk_lock); -rhashtable_init (&newtbl->rhead, &mesh_rht_params); +if (rhashtable_init (&newtbl->rhead, &mesh_rht_params)) { +kfree (newtbl); +return NULL ; + }return newtbl; }
net/mac80211/rx.c +2 -1
@@ -3952,7 +3952,8 @@ static bool ieee80211_accept_frame(struct ieee80211_rx_data *rx)if (!bssid)return false;if (ether_addr_equal (sdata->vif.addr, hdr->addr2) || -ether_addr_equal (sdata->u.ibss.bssid, hdr->addr2)) +ether_addr_equal (sdata->u.ibss.bssid, hdr->addr2) || + !is_valid_ether_addr (hdr->addr2))return false;if (ieee80211_is_beacon (hdr->frame_control))return true;
net/netfilter/nf_nat_masquerade.c +97 -71
245 lines not on this page · raw message
net/sched/sch_api.c +6 -0
@@ -510,6 +510,12 @@ static struct qdisc_size_table *qdisc_get_stab(struct nlattr *opt,return stab; } +if (s->size_log >STAB_SIZE_LOG_MAX || + s->cell_log >STAB_SIZE_LOG_MAX ) { +NL_SET_ERR_MSG (extack,"Invalid logarithmic size of size table" ); +return ERR_PTR (-EINVAL ); + } + stab =kmalloc (sizeof (*stab) + tsize *sizeof (u16),GFP_KERNEL );if (!stab)return ERR_PTR (-ENOMEM );