Linux v4.17.9
This commit is contained in:
parent
e9258fd106
commit
2a8ca2867b
|
@ -1,46 +0,0 @@
|
|||
From patchwork Thu Jun 21 13:00:20 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [1/2] xen-netfront: Fix mismatched rtnl_unlock
|
||||
X-Patchwork-Submitter: Ross Lagerwall <ross.lagerwall@citrix.com>
|
||||
X-Patchwork-Id: 932721
|
||||
Message-Id: <20180621130021.27029-2-ross.lagerwall@citrix.com>
|
||||
To: <netdev@vger.kernel.org>
|
||||
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
|
||||
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
|
||||
Juergen Gross <jgross@suse.com>, "David S. Miller" <davem@davemloft.net>,
|
||||
<xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>
|
||||
Date: Thu, 21 Jun 2018 14:00:20 +0100
|
||||
From: Ross Lagerwall <ross.lagerwall@citrix.com>
|
||||
List-Id: <netdev.vger.kernel.org>
|
||||
|
||||
Fixes: f599c64fdf7d ("xen-netfront: Fix race between device setup and open")
|
||||
Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
|
||||
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
|
||||
Reviewed-by: Juergen Gross <jgross@suse.com>
|
||||
---
|
||||
drivers/net/xen-netfront.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
|
||||
index 922ce0a..ee4cb6c 100644
|
||||
--- a/drivers/net/xen-netfront.c
|
||||
+++ b/drivers/net/xen-netfront.c
|
||||
@@ -1810,7 +1810,7 @@ static int talk_to_netback(struct xenbus_device *dev,
|
||||
err = xen_net_read_mac(dev, info->netdev->dev_addr);
|
||||
if (err) {
|
||||
xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename);
|
||||
- goto out;
|
||||
+ goto out_unlocked;
|
||||
}
|
||||
|
||||
rtnl_lock();
|
||||
@@ -1925,6 +1925,7 @@ static int talk_to_netback(struct xenbus_device *dev,
|
||||
xennet_destroy_queues(info);
|
||||
out:
|
||||
rtnl_unlock();
|
||||
+out_unlocked:
|
||||
device_unregister(&dev->dev);
|
||||
return err;
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
From patchwork Thu Jun 21 13:00:21 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [2/2] xen-netfront: Update features after registering netdev
|
||||
X-Patchwork-Submitter: Ross Lagerwall <ross.lagerwall@citrix.com>
|
||||
X-Patchwork-Id: 932720
|
||||
Message-Id: <20180621130021.27029-3-ross.lagerwall@citrix.com>
|
||||
To: <netdev@vger.kernel.org>
|
||||
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
|
||||
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
|
||||
Juergen Gross <jgross@suse.com>, "David S. Miller" <davem@davemloft.net>,
|
||||
<xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>,
|
||||
Liam Shepherd <liam@dancer.es>
|
||||
Date: Thu, 21 Jun 2018 14:00:21 +0100
|
||||
From: Ross Lagerwall <ross.lagerwall@citrix.com>
|
||||
List-Id: <netdev.vger.kernel.org>
|
||||
|
||||
Update the features after calling register_netdev() otherwise the
|
||||
device features are not set up correctly and it not possible to change
|
||||
the MTU of the device. After this change, the features reported by
|
||||
ethtool match the device's features before the commit which introduced
|
||||
the issue and it is possible to change the device's MTU.
|
||||
|
||||
Fixes: f599c64fdf7d ("xen-netfront: Fix race between device setup and open")
|
||||
Reported-by: Liam Shepherd <liam@dancer.es>
|
||||
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
|
||||
Reviewed-by: Juergen Gross <jgross@suse.com>
|
||||
---
|
||||
drivers/net/xen-netfront.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
|
||||
index ee4cb6c..a57daec 100644
|
||||
--- a/drivers/net/xen-netfront.c
|
||||
+++ b/drivers/net/xen-netfront.c
|
||||
@@ -1951,10 +1951,6 @@ static int xennet_connect(struct net_device *dev)
|
||||
/* talk_to_netback() sets the correct number of queues */
|
||||
num_queues = dev->real_num_tx_queues;
|
||||
|
||||
- rtnl_lock();
|
||||
- netdev_update_features(dev);
|
||||
- rtnl_unlock();
|
||||
-
|
||||
if (dev->reg_state == NETREG_UNINITIALIZED) {
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
@@ -1964,6 +1960,10 @@ static int xennet_connect(struct net_device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
+ rtnl_lock();
|
||||
+ netdev_update_features(dev);
|
||||
+ rtnl_unlock();
|
||||
+
|
||||
/*
|
||||
* All public and private state should now be sane. Get
|
||||
* ready to start sending and receiving packets and give the driver
|
|
@ -0,0 +1,56 @@
|
|||
From 44de022c4382541cebdd6de4465d1f4f465ff1dd Mon Sep 17 00:00:00 2001
|
||||
From: Theodore Ts'o <tytso@mit.edu>
|
||||
Date: Sun, 8 Jul 2018 19:35:02 -0400
|
||||
Subject: ext4: fix false negatives *and* false positives in
|
||||
ext4_check_descriptors()
|
||||
|
||||
Ext4_check_descriptors() was getting called before s_gdb_count was
|
||||
initialized. So for file systems w/o the meta_bg feature, allocation
|
||||
bitmaps could overlap the block group descriptors and ext4 wouldn't
|
||||
notice.
|
||||
|
||||
For file systems with the meta_bg feature enabled, there was a
|
||||
fencepost error which would cause the ext4_check_descriptors() to
|
||||
incorrectly believe that the block allocation bitmap overlaps with the
|
||||
block group descriptor blocks, and it would reject the mount.
|
||||
|
||||
Fix both of these problems.
|
||||
|
||||
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||
Cc: stable@vger.kernel.org
|
||||
---
|
||||
fs/ext4/super.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
|
||||
index ba2396a7bd04..eff5c983e067 100644
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -2342,7 +2342,7 @@ static int ext4_check_descriptors(struct super_block *sb,
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
ext4_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block);
|
||||
ext4_fsblk_t last_block;
|
||||
- ext4_fsblk_t last_bg_block = sb_block + ext4_bg_num_gdb(sb, 0) + 1;
|
||||
+ ext4_fsblk_t last_bg_block = sb_block + ext4_bg_num_gdb(sb, 0);
|
||||
ext4_fsblk_t block_bitmap;
|
||||
ext4_fsblk_t inode_bitmap;
|
||||
ext4_fsblk_t inode_table;
|
||||
@@ -4085,14 +4085,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||
goto failed_mount2;
|
||||
}
|
||||
}
|
||||
+ sbi->s_gdb_count = db_count;
|
||||
if (!ext4_check_descriptors(sb, logical_sb_block, &first_not_zeroed)) {
|
||||
ext4_msg(sb, KERN_ERR, "group descriptors corrupted!");
|
||||
ret = -EFSCORRUPTED;
|
||||
goto failed_mount2;
|
||||
}
|
||||
|
||||
- sbi->s_gdb_count = db_count;
|
||||
-
|
||||
timer_setup(&sbi->s_err_report, print_daily_error_info, 0);
|
||||
|
||||
/* Register extent status tree shrinker */
|
||||
--
|
||||
cgit 1.2-0.3.lf.el7
|
||||
|
15
kernel.spec
15
kernel.spec
|
@ -639,10 +639,6 @@ Patch508: ath10k-Update-the-phymode-along-with-bandwidth-change.patch
|
|||
# In 4.18
|
||||
Patch509: rtc-nvmem-don-t-return-an-error-when-not-enabled.patch
|
||||
|
||||
# rhbz 1584216
|
||||
Patch510: 1-2-xen-netfront-Fix-mismatched-rtnl_unlock.patch
|
||||
Patch511: 2-2-xen-netfront-Update-features-after-registering-netdev.patch
|
||||
|
||||
# rhbz 1591516
|
||||
Patch515: 0001-signal-Stop-special-casing-TRAP_FIXME-and-FPE_FIXME-.patch
|
||||
|
||||
|
@ -671,12 +667,13 @@ Patch523: 0001-xfs-More-robust-inode-extent-count-validation.patch
|
|||
# rhbz 1597333
|
||||
# Patch526: xhci-Fix-perceived-dead-host-due-to-runtime-suspend-.patch
|
||||
|
||||
# i686 patch that will eventually be 4.17.8
|
||||
Patch527: mm-don-t-do-zero_resv_unavail-if-memmap-is-not-allocated.patch
|
||||
|
||||
# rbhz 1607092
|
||||
Patch528: Revert-iommu-intel-iommu-Enable-CONFIG_DMA_DIRECT_OP.patch
|
||||
|
||||
# rhbz 1602971
|
||||
Patch529: ext4-fix-false-negative-and-false-positives.patch
|
||||
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
|
@ -1926,6 +1923,10 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Jul 23 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.17.9-200
|
||||
- Linux v4.17.9
|
||||
- Fix emergency shell with ext4 rootfs (rhbz 1602971)
|
||||
|
||||
* Mon Jul 23 2018 Jeremy Cline <jeremy@jcline.org>
|
||||
- Fix iwlwifi module load failure (rhbz 1607092)
|
||||
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
From d1b47a7c9efcf3c3384b70f6e3c8f1423b44d8c7 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Tatashin <pasha.tatashin@oracle.com>
|
||||
Date: Mon, 16 Jul 2018 11:16:30 -0400
|
||||
Subject: mm: don't do zero_resv_unavail if memmap is not allocated
|
||||
|
||||
From: Pavel Tatashin <pasha.tatashin@oracle.com>
|
||||
|
||||
commit d1b47a7c9efcf3c3384b70f6e3c8f1423b44d8c7 upstream.
|
||||
|
||||
Moving zero_resv_unavail before memmap_init_zone(), caused a regression on
|
||||
x86-32.
|
||||
|
||||
The cause is that we access struct pages before they are allocated when
|
||||
CONFIG_FLAT_NODE_MEM_MAP is used.
|
||||
|
||||
free_area_init_nodes()
|
||||
zero_resv_unavail()
|
||||
mm_zero_struct_page(pfn_to_page(pfn)); <- struct page is not alloced
|
||||
free_area_init_node()
|
||||
if CONFIG_FLAT_NODE_MEM_MAP
|
||||
alloc_node_mem_map()
|
||||
memblock_virt_alloc_node_nopanic() <- struct page alloced here
|
||||
|
||||
On the other hand memblock_virt_alloc_node_nopanic() zeroes all the memory
|
||||
that it returns, so we do not need to do zero_resv_unavail() here.
|
||||
|
||||
Fixes: e181ae0c5db9 ("mm: zero unavailable pages before memmap init")
|
||||
Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
|
||||
Tested-by: Matt Hart <matt@mattface.org>
|
||||
Acked-by: Michal Hocko <mhocko@suse.com>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
include/linux/mm.h | 2 +-
|
||||
mm/page_alloc.c | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -2081,7 +2081,7 @@ extern int __meminit __early_pfn_to_nid(
|
||||
struct mminit_pfnnid_cache *state);
|
||||
#endif
|
||||
|
||||
-#ifdef CONFIG_HAVE_MEMBLOCK
|
||||
+#if defined(CONFIG_HAVE_MEMBLOCK) && !defined(CONFIG_FLAT_NODE_MEM_MAP)
|
||||
void zero_resv_unavail(void);
|
||||
#else
|
||||
static inline void zero_resv_unavail(void) {}
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -6377,7 +6377,7 @@ void __paginginit free_area_init_node(in
|
||||
free_area_init_core(pgdat);
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_HAVE_MEMBLOCK
|
||||
+#if defined(CONFIG_HAVE_MEMBLOCK) && !defined(CONFIG_FLAT_NODE_MEM_MAP)
|
||||
/*
|
||||
* Only struct pages that are backed by physical memory are zeroed and
|
||||
* initialized by going through __init_single_page(). But, there are some
|
||||
@@ -6415,7 +6415,7 @@ void __paginginit zero_resv_unavail(void
|
||||
if (pgcnt)
|
||||
pr_info("Reserved but unavailable: %lld pages", pgcnt);
|
||||
}
|
||||
-#endif /* CONFIG_HAVE_MEMBLOCK */
|
||||
+#endif /* CONFIG_HAVE_MEMBLOCK && !CONFIG_FLAT_NODE_MEM_MAP */
|
||||
|
||||
#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
|
||||
|
2
sources
2
sources
|
@ -1,2 +1,2 @@
|
|||
SHA512 (linux-4.17.tar.xz) = 4d9de340a26155a89ea8773131c76220cc2057f2b5d031b467b60e8b14c1842518e2d60a863d8c695f0f7640f3f18d43826201984a238dade857b6cef79837db
|
||||
SHA512 (patch-4.17.7.xz) = 955342b78da2977dbd08ff0acb7e681c646b1dfceef71246a08bdd102e0b2ad41f3eb7c353755ed1da2e1a5d9138476adc7bf11fd732a3033b6f8aac457dac75
|
||||
SHA512 (patch-4.17.9.xz) = 4fce83a490b9127a37e50b783bad590cd01c5a3442fa1913a0d581e8083b1a3729bb54286a16321c003995af2ce3e62874423f62cdd10673a5b0bf444616c666
|
||||
|
|
Loading…
Reference in New Issue