From: Greg Kroah-Hartman Date: Wed, 19 Aug 2020 12:39:46 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.14.194~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=263887f3f63d7ab4fff5fa819aded16e9f92dbd3;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: bcache-allocate-meta-data-pages-as-compound-pages.patch ext2-fix-missing-percpu_counter_inc.patch kprobes-fix-null-pointer-dereference-at-kprobe_ftrace_handler.patch mac80211-fix-misplaced-while-instead-of-if.patch md-raid5-fix-force-reconstruct-write-io-stuck-in-degraded-raid5.patch mips-cpu-0-is-not-hotpluggable.patch net-ethernet-stmmac-disable-hardware-multicast-filter.patch net-stmmac-dwmac1000-provide-multicast-filter-fallback.patch ocfs2-change-slot-number-type-s16-to-u16.patch pseries-fix-64-bit-logical-memory-block-panic.patch --- diff --git a/queue-4.4/bcache-allocate-meta-data-pages-as-compound-pages.patch b/queue-4.4/bcache-allocate-meta-data-pages-as-compound-pages.patch new file mode 100644 index 00000000000..e3ce3770f38 --- /dev/null +++ b/queue-4.4/bcache-allocate-meta-data-pages-as-compound-pages.patch @@ -0,0 +1,80 @@ +From 5fe48867856367142d91a82f2cbf7a57a24cbb70 Mon Sep 17 00:00:00 2001 +From: Coly Li +Date: Sat, 25 Jul 2020 20:00:16 +0800 +Subject: bcache: allocate meta data pages as compound pages + +From: Coly Li + +commit 5fe48867856367142d91a82f2cbf7a57a24cbb70 upstream. + +There are some meta data of bcache are allocated by multiple pages, +and they are used as bio bv_page for I/Os to the cache device. for +example cache_set->uuids, cache->disk_buckets, journal_write->data, +bset_tree->data. + +For such meta data memory, all the allocated pages should be treated +as a single memory block. Then the memory management and underlying I/O +code can treat them more clearly. + +This patch adds __GFP_COMP flag to all the location allocating >0 order +pages for the above mentioned meta data. Then their pages are treated +as compound pages now. + +Signed-off-by: Coly Li +Cc: stable@vger.kernel.org +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/bcache/bset.c | 2 +- + drivers/md/bcache/btree.c | 2 +- + drivers/md/bcache/journal.c | 4 ++-- + drivers/md/bcache/super.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/md/bcache/bset.c ++++ b/drivers/md/bcache/bset.c +@@ -317,7 +317,7 @@ int bch_btree_keys_alloc(struct btree_ke + + b->page_order = page_order; + +- t->data = (void *) __get_free_pages(gfp, b->page_order); ++ t->data = (void *) __get_free_pages(__GFP_COMP|gfp, b->page_order); + if (!t->data) + goto err; + +--- a/drivers/md/bcache/btree.c ++++ b/drivers/md/bcache/btree.c +@@ -795,7 +795,7 @@ int bch_btree_cache_alloc(struct cache_s + mutex_init(&c->verify_lock); + + c->verify_ondisk = (void *) +- __get_free_pages(GFP_KERNEL, ilog2(bucket_pages(c))); ++ __get_free_pages(GFP_KERNEL|__GFP_COMP, ilog2(bucket_pages(c))); + + c->verify_data = mca_bucket_alloc(c, &ZERO_KEY, GFP_KERNEL); + +--- a/drivers/md/bcache/journal.c ++++ b/drivers/md/bcache/journal.c +@@ -838,8 +838,8 @@ int bch_journal_alloc(struct cache_set * + j->w[1].c = c; + + if (!(init_fifo(&j->pin, JOURNAL_PIN, GFP_KERNEL)) || +- !(j->w[0].data = (void *) __get_free_pages(GFP_KERNEL, JSET_BITS)) || +- !(j->w[1].data = (void *) __get_free_pages(GFP_KERNEL, JSET_BITS))) ++ !(j->w[0].data = (void *) __get_free_pages(GFP_KERNEL|__GFP_COMP, JSET_BITS)) || ++ !(j->w[1].data = (void *) __get_free_pages(GFP_KERNEL|__GFP_COMP, JSET_BITS))) + return -ENOMEM; + + return 0; +--- a/drivers/md/bcache/super.c ++++ b/drivers/md/bcache/super.c +@@ -1469,7 +1469,7 @@ void bch_cache_set_unregister(struct cac + } + + #define alloc_bucket_pages(gfp, c) \ +- ((void *) __get_free_pages(__GFP_ZERO|gfp, ilog2(bucket_pages(c)))) ++ ((void *) __get_free_pages(__GFP_ZERO|__GFP_COMP|gfp, ilog2(bucket_pages(c)))) + + struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) + { diff --git a/queue-4.4/ext2-fix-missing-percpu_counter_inc.patch b/queue-4.4/ext2-fix-missing-percpu_counter_inc.patch new file mode 100644 index 00000000000..0954002ee0c --- /dev/null +++ b/queue-4.4/ext2-fix-missing-percpu_counter_inc.patch @@ -0,0 +1,46 @@ +From bc2fbaa4d3808aef82dd1064a8e61c16549fe956 Mon Sep 17 00:00:00 2001 +From: Mikulas Patocka +Date: Mon, 20 Apr 2020 16:02:21 -0400 +Subject: ext2: fix missing percpu_counter_inc + +From: Mikulas Patocka + +commit bc2fbaa4d3808aef82dd1064a8e61c16549fe956 upstream. + +sbi->s_freeinodes_counter is only decreased by the ext2 code, it is never +increased. This patch fixes it. + +Note that sbi->s_freeinodes_counter is only used in the algorithm that +tries to find the group for new allocations, so this bug is not easily +visible (the only visibility is that the group finding algorithm selects +inoptinal result). + +Link: https://lore.kernel.org/r/alpine.LRH.2.02.2004201538300.19436@file01.intranet.prod.int.rdu2.redhat.com +Signed-off-by: Mikulas Patocka +Cc: stable@vger.kernel.org +Signed-off-by: Jan Kara +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ext2/ialloc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/fs/ext2/ialloc.c ++++ b/fs/ext2/ialloc.c +@@ -79,6 +79,7 @@ static void ext2_release_inode(struct su + if (dir) + le16_add_cpu(&desc->bg_used_dirs_count, -1); + spin_unlock(sb_bgl_lock(EXT2_SB(sb), group)); ++ percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter); + if (dir) + percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter); + mark_buffer_dirty(bh); +@@ -525,7 +526,7 @@ got: + goto fail; + } + +- percpu_counter_add(&sbi->s_freeinodes_counter, -1); ++ percpu_counter_dec(&sbi->s_freeinodes_counter); + if (S_ISDIR(mode)) + percpu_counter_inc(&sbi->s_dirs_counter); + diff --git a/queue-4.4/kprobes-fix-null-pointer-dereference-at-kprobe_ftrace_handler.patch b/queue-4.4/kprobes-fix-null-pointer-dereference-at-kprobe_ftrace_handler.patch new file mode 100644 index 00000000000..3b17d8bcefe --- /dev/null +++ b/queue-4.4/kprobes-fix-null-pointer-dereference-at-kprobe_ftrace_handler.patch @@ -0,0 +1,94 @@ +From 0cb2f1372baa60af8456388a574af6133edd7d80 Mon Sep 17 00:00:00 2001 +From: Muchun Song +Date: Tue, 28 Jul 2020 14:45:36 +0800 +Subject: kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler + +From: Muchun Song + +commit 0cb2f1372baa60af8456388a574af6133edd7d80 upstream. + +We found a case of kernel panic on our server. The stack trace is as +follows(omit some irrelevant information): + + BUG: kernel NULL pointer dereference, address: 0000000000000080 + RIP: 0010:kprobe_ftrace_handler+0x5e/0xe0 + RSP: 0018:ffffb512c6550998 EFLAGS: 00010282 + RAX: 0000000000000000 RBX: ffff8e9d16eea018 RCX: 0000000000000000 + RDX: ffffffffbe1179c0 RSI: ffffffffc0535564 RDI: ffffffffc0534ec0 + RBP: ffffffffc0534ec1 R08: ffff8e9d1bbb0f00 R09: 0000000000000004 + R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 + R13: ffff8e9d1f797060 R14: 000000000000bacc R15: ffff8e9ce13eca00 + CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 + CR2: 0000000000000080 CR3: 00000008453d0005 CR4: 00000000003606e0 + DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 + DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 + Call Trace: + + ftrace_ops_assist_func+0x56/0xe0 + ftrace_call+0x5/0x34 + tcpa_statistic_send+0x5/0x130 [ttcp_engine] + +The tcpa_statistic_send is the function being kprobed. After analysis, +the root cause is that the fourth parameter regs of kprobe_ftrace_handler +is NULL. Why regs is NULL? We use the crash tool to analyze the kdump. + + crash> dis tcpa_statistic_send -r + : callq 0xffffffffbd8018c0 + +The tcpa_statistic_send calls ftrace_caller instead of ftrace_regs_caller. +So it is reasonable that the fourth parameter regs of kprobe_ftrace_handler +is NULL. In theory, we should call the ftrace_regs_caller instead of the +ftrace_caller. After in-depth analysis, we found a reproducible path. + + Writing a simple kernel module which starts a periodic timer. The + timer's handler is named 'kprobe_test_timer_handler'. The module + name is kprobe_test.ko. + + 1) insmod kprobe_test.ko + 2) bpftrace -e 'kretprobe:kprobe_test_timer_handler {}' + 3) echo 0 > /proc/sys/kernel/ftrace_enabled + 4) rmmod kprobe_test + 5) stop step 2) kprobe + 6) insmod kprobe_test.ko + 7) bpftrace -e 'kretprobe:kprobe_test_timer_handler {}' + +We mark the kprobe as GONE but not disarm the kprobe in the step 4). +The step 5) also do not disarm the kprobe when unregister kprobe. So +we do not remove the ip from the filter. In this case, when the module +loads again in the step 6), we will replace the code to ftrace_caller +via the ftrace_module_enable(). When we register kprobe again, we will +not replace ftrace_caller to ftrace_regs_caller because the ftrace is +disabled in the step 3). So the step 7) will trigger kernel panic. Fix +this problem by disarming the kprobe when the module is going away. + +Link: https://lkml.kernel.org/r/20200728064536.24405-1-songmuchun@bytedance.com + +Cc: stable@vger.kernel.org +Fixes: ae6aa16fdc16 ("kprobes: introduce ftrace based optimization") +Acked-by: Masami Hiramatsu +Signed-off-by: Muchun Song +Co-developed-by: Chengming Zhou +Signed-off-by: Chengming Zhou +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/kprobes.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/kernel/kprobes.c ++++ b/kernel/kprobes.c +@@ -2029,6 +2029,13 @@ static void kill_kprobe(struct kprobe *p + * the original probed function (which will be freed soon) any more. + */ + arch_remove_kprobe(p); ++ ++ /* ++ * The module is going away. We should disarm the kprobe which ++ * is using ftrace. ++ */ ++ if (kprobe_ftrace(p)) ++ disarm_kprobe_ftrace(p); + } + + /* Disable one kprobe */ diff --git a/queue-4.4/mac80211-fix-misplaced-while-instead-of-if.patch b/queue-4.4/mac80211-fix-misplaced-while-instead-of-if.patch new file mode 100644 index 00000000000..ac4236447c7 --- /dev/null +++ b/queue-4.4/mac80211-fix-misplaced-while-instead-of-if.patch @@ -0,0 +1,37 @@ +From 5981fe5b0529ba25d95f37d7faa434183ad618c5 Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Mon, 3 Aug 2020 11:02:10 +0200 +Subject: mac80211: fix misplaced while instead of if + +From: Johannes Berg + +commit 5981fe5b0529ba25d95f37d7faa434183ad618c5 upstream. + +This never was intended to be a 'while' loop, it should've +just been an 'if' instead of 'while'. Fix this. + +I noticed this while applying another patch from Ben that +intended to fix a busy loop at this spot. + +Cc: stable@vger.kernel.org +Fixes: b16798f5b907 ("mac80211: mark station unauthorized before key removal") +Reported-by: Ben Greear +Link: https://lore.kernel.org/r/20200803110209.253009ae41ff.I3522aad099392b31d5cf2dcca34cbac7e5832dde@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/mac80211/sta_info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/mac80211/sta_info.c ++++ b/net/mac80211/sta_info.c +@@ -906,7 +906,7 @@ static void __sta_info_destroy_part2(str + might_sleep(); + lockdep_assert_held(&local->sta_mtx); + +- while (sta->sta_state == IEEE80211_STA_AUTHORIZED) { ++ if (sta->sta_state == IEEE80211_STA_AUTHORIZED) { + ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); + WARN_ON_ONCE(ret); + } diff --git a/queue-4.4/md-raid5-fix-force-reconstruct-write-io-stuck-in-degraded-raid5.patch b/queue-4.4/md-raid5-fix-force-reconstruct-write-io-stuck-in-degraded-raid5.patch new file mode 100644 index 00000000000..94a2fec5da1 --- /dev/null +++ b/queue-4.4/md-raid5-fix-force-reconstruct-write-io-stuck-in-degraded-raid5.patch @@ -0,0 +1,55 @@ +From a1c6ae3d9f3dd6aa5981a332a6f700cf1c25edef Mon Sep 17 00:00:00 2001 +From: ChangSyun Peng +Date: Fri, 31 Jul 2020 17:50:17 +0800 +Subject: md/raid5: Fix Force reconstruct-write io stuck in degraded raid5 + +From: ChangSyun Peng + +commit a1c6ae3d9f3dd6aa5981a332a6f700cf1c25edef upstream. + +In degraded raid5, we need to read parity to do reconstruct-write when +data disks fail. However, we can not read parity from +handle_stripe_dirtying() in force reconstruct-write mode. + +Reproducible Steps: + +1. Create degraded raid5 +mdadm -C /dev/md2 --assume-clean -l5 -n3 /dev/sda2 /dev/sdb2 missing +2. Set rmw_level to 0 +echo 0 > /sys/block/md2/md/rmw_level +3. IO to raid5 + +Now some io may be stuck in raid5. We can use handle_stripe_fill() to read +the parity in this situation. + +Cc: # v4.4+ +Reviewed-by: Alex Wu +Reviewed-by: BingJing Chang +Reviewed-by: Danny Shih +Signed-off-by: ChangSyun Peng +Signed-off-by: Song Liu +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/raid5.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -3345,6 +3345,7 @@ static int need_this_block(struct stripe + * is missing/faulty, then we need to read everything we can. + */ + if (sh->raid_conf->level != 6 && ++ sh->raid_conf->rmw_level != PARITY_DISABLE_RMW && + sh->sector < sh->raid_conf->mddev->recovery_cp) + /* reconstruct-write isn't being forced */ + return 0; +@@ -4479,7 +4480,7 @@ static void handle_stripe(struct stripe_ + * or to load a block that is being partially written. + */ + if (s.to_read || s.non_overwrite +- || (conf->level == 6 && s.to_write && s.failed) ++ || (s.to_write && s.failed) + || (s.syncing && (s.uptodate + s.compute < disks)) + || s.replacing + || s.expanding) diff --git a/queue-4.4/mips-cpu-0-is-not-hotpluggable.patch b/queue-4.4/mips-cpu-0-is-not-hotpluggable.patch new file mode 100644 index 00000000000..a982e98d48a --- /dev/null +++ b/queue-4.4/mips-cpu-0-is-not-hotpluggable.patch @@ -0,0 +1,32 @@ +From 9cce844abf07b683cff5f0273977d5f8d0af94c7 Mon Sep 17 00:00:00 2001 +From: Huacai Chen +Date: Thu, 16 Jul 2020 18:40:23 +0800 +Subject: MIPS: CPU#0 is not hotpluggable + +From: Huacai Chen + +commit 9cce844abf07b683cff5f0273977d5f8d0af94c7 upstream. + +Now CPU#0 is not hotpluggable on MIPS, so prevent to create /sys/devices +/system/cpu/cpu0/online which confuses some user-space tools. + +Cc: stable@vger.kernel.org +Signed-off-by: Huacai Chen +Signed-off-by: Thomas Bogendoerfer +Signed-off-by: Greg Kroah-Hartman + +--- + arch/mips/kernel/topology.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/mips/kernel/topology.c ++++ b/arch/mips/kernel/topology.c +@@ -19,7 +19,7 @@ static int __init topology_init(void) + for_each_present_cpu(i) { + struct cpu *c = &per_cpu(cpu_devices, i); + +- c->hotpluggable = 1; ++ c->hotpluggable = !!i; + ret = register_cpu(c, i); + if (ret) + printk(KERN_WARNING "topology_init: register_cpu %d " diff --git a/queue-4.4/net-ethernet-stmmac-disable-hardware-multicast-filter.patch b/queue-4.4/net-ethernet-stmmac-disable-hardware-multicast-filter.patch new file mode 100644 index 00000000000..d51db3d8705 --- /dev/null +++ b/queue-4.4/net-ethernet-stmmac-disable-hardware-multicast-filter.patch @@ -0,0 +1,39 @@ +From df43dd526e6609769ae513a81443c7aa727c8ca3 Mon Sep 17 00:00:00 2001 +From: Jonathan McDowell +Date: Wed, 12 Aug 2020 20:37:23 +0100 +Subject: net: ethernet: stmmac: Disable hardware multicast filter + +From: Jonathan McDowell + +commit df43dd526e6609769ae513a81443c7aa727c8ca3 upstream. + +The IPQ806x does not appear to have a functional multicast ethernet +address filter. This was observed as a failure to correctly receive IPv6 +packets on a LAN to the all stations address. Checking the vendor driver +shows that it does not attempt to enable the multicast filter and +instead falls back to receiving all multicast packets, internally +setting ALLMULTI. + +Use the new fallback support in the dwmac1000 driver to correctly +achieve the same with the mainline IPQ806x driver. Confirmed to fix IPv6 +functionality on an RB3011 router. + +Cc: stable@vger.kernel.org +Signed-off-by: Jonathan McDowell +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +@@ -360,6 +360,7 @@ static int ipq806x_gmac_probe(struct pla + plat_dat->has_gmac = true; + plat_dat->bsp_priv = gmac; + plat_dat->fix_mac_speed = ipq806x_gmac_fix_mac_speed; ++ plat_dat->multicast_filter_bins = 0; + + return stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res); + } diff --git a/queue-4.4/net-stmmac-dwmac1000-provide-multicast-filter-fallback.patch b/queue-4.4/net-stmmac-dwmac1000-provide-multicast-filter-fallback.patch new file mode 100644 index 00000000000..d1b24157f02 --- /dev/null +++ b/queue-4.4/net-stmmac-dwmac1000-provide-multicast-filter-fallback.patch @@ -0,0 +1,35 @@ +From 592d751c1e174df5ff219946908b005eb48934b3 Mon Sep 17 00:00:00 2001 +From: Jonathan McDowell +Date: Wed, 12 Aug 2020 20:37:01 +0100 +Subject: net: stmmac: dwmac1000: provide multicast filter fallback + +From: Jonathan McDowell + +commit 592d751c1e174df5ff219946908b005eb48934b3 upstream. + +If we don't have a hardware multicast filter available then instead of +silently failing to listen for the requested ethernet broadcast +addresses fall back to receiving all multicast packets, in a similar +fashion to other drivers with no multicast filter. + +Cc: stable@vger.kernel.org +Signed-off-by: Jonathan McDowell +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c +@@ -146,6 +146,9 @@ static void dwmac1000_set_filter(struct + value = GMAC_FRAME_FILTER_PR; + } else if (dev->flags & IFF_ALLMULTI) { + value = GMAC_FRAME_FILTER_PM; /* pass all multi */ ++ } else if (!netdev_mc_empty(dev) && (mcbitslog2 == 0)) { ++ /* Fall back to all multicast if we've no filter */ ++ value = GMAC_FRAME_FILTER_PM; + } else if (!netdev_mc_empty(dev)) { + struct netdev_hw_addr *ha; + diff --git a/queue-4.4/ocfs2-change-slot-number-type-s16-to-u16.patch b/queue-4.4/ocfs2-change-slot-number-type-s16-to-u16.patch new file mode 100644 index 00000000000..784d7ed116e --- /dev/null +++ b/queue-4.4/ocfs2-change-slot-number-type-s16-to-u16.patch @@ -0,0 +1,87 @@ +From 38d51b2dd171ad973afc1f5faab825ed05a2d5e9 Mon Sep 17 00:00:00 2001 +From: Junxiao Bi +Date: Thu, 6 Aug 2020 23:18:02 -0700 +Subject: ocfs2: change slot number type s16 to u16 + +From: Junxiao Bi + +commit 38d51b2dd171ad973afc1f5faab825ed05a2d5e9 upstream. + +Dan Carpenter reported the following static checker warning. + + fs/ocfs2/super.c:1269 ocfs2_parse_options() warn: '(-1)' 65535 can't fit into 32767 'mopt->slot' + fs/ocfs2/suballoc.c:859 ocfs2_init_inode_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_inode_steal_slot' + fs/ocfs2/suballoc.c:867 ocfs2_init_meta_steal_slot() warn: '(-1)' 65535 can't fit into 32767 'osb->s_meta_steal_slot' + +That's because OCFS2_INVALID_SLOT is (u16)-1. Slot number in ocfs2 can be +never negative, so change s16 to u16. + +Fixes: 9277f8334ffc ("ocfs2: fix value of OCFS2_INVALID_SLOT") +Reported-by: Dan Carpenter +Signed-off-by: Junxiao Bi +Signed-off-by: Andrew Morton +Reviewed-by: Joseph Qi +Reviewed-by: Gang He +Cc: Mark Fasheh +Cc: Joel Becker +Cc: Junxiao Bi +Cc: Changwei Ge +Cc: Jun Piao +Cc: +Link: http://lkml.kernel.org/r/20200627001259.19757-1-junxiao.bi@oracle.com +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ocfs2/ocfs2.h | 4 ++-- + fs/ocfs2/suballoc.c | 4 ++-- + fs/ocfs2/super.c | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +--- a/fs/ocfs2/ocfs2.h ++++ b/fs/ocfs2/ocfs2.h +@@ -337,8 +337,8 @@ struct ocfs2_super + spinlock_t osb_lock; + u32 s_next_generation; + unsigned long osb_flags; +- s16 s_inode_steal_slot; +- s16 s_meta_steal_slot; ++ u16 s_inode_steal_slot; ++ u16 s_meta_steal_slot; + atomic_t s_num_inodes_stolen; + atomic_t s_num_meta_stolen; + +--- a/fs/ocfs2/suballoc.c ++++ b/fs/ocfs2/suballoc.c +@@ -895,9 +895,9 @@ static void __ocfs2_set_steal_slot(struc + { + spin_lock(&osb->osb_lock); + if (type == INODE_ALLOC_SYSTEM_INODE) +- osb->s_inode_steal_slot = slot; ++ osb->s_inode_steal_slot = (u16)slot; + else if (type == EXTENT_ALLOC_SYSTEM_INODE) +- osb->s_meta_steal_slot = slot; ++ osb->s_meta_steal_slot = (u16)slot; + spin_unlock(&osb->osb_lock); + } + +--- a/fs/ocfs2/super.c ++++ b/fs/ocfs2/super.c +@@ -96,7 +96,7 @@ struct mount_options + unsigned long commit_interval; + unsigned long mount_opt; + unsigned int atime_quantum; +- signed short slot; ++ unsigned short slot; + int localalloc_opt; + unsigned int resv_level; + int dir_resv_level; +@@ -1372,7 +1372,7 @@ static int ocfs2_parse_options(struct su + goto bail; + } + if (option) +- mopt->slot = (s16)option; ++ mopt->slot = (u16)option; + break; + case Opt_commit: + option = 0; diff --git a/queue-4.4/pseries-fix-64-bit-logical-memory-block-panic.patch b/queue-4.4/pseries-fix-64-bit-logical-memory-block-panic.patch new file mode 100644 index 00000000000..4c9725ec79e --- /dev/null +++ b/queue-4.4/pseries-fix-64-bit-logical-memory-block-panic.patch @@ -0,0 +1,37 @@ +From 89c140bbaeee7a55ed0360a88f294ead2b95201b Mon Sep 17 00:00:00 2001 +From: Anton Blanchard +Date: Wed, 15 Jul 2020 10:08:20 +1000 +Subject: pseries: Fix 64 bit logical memory block panic + +From: Anton Blanchard + +commit 89c140bbaeee7a55ed0360a88f294ead2b95201b upstream. + +Booting with a 4GB LMB size causes us to panic: + + qemu-system-ppc64: OS terminated: OS panic: + Memory block size not suitable: 0x0 + +Fix pseries_memory_block_size() to handle 64 bit LMBs. + +Cc: stable@vger.kernel.org +Signed-off-by: Anton Blanchard +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20200715000820.1255764-1-anton@ozlabs.org +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/hotplug-memory.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/platforms/pseries/hotplug-memory.c ++++ b/arch/powerpc/platforms/pseries/hotplug-memory.c +@@ -29,7 +29,7 @@ static bool rtas_hp_event; + unsigned long pseries_memory_block_size(void) + { + struct device_node *np; +- unsigned int memblock_size = MIN_MEMORY_BLOCK_SIZE; ++ u64 memblock_size = MIN_MEMORY_BLOCK_SIZE; + struct resource r; + + np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); diff --git a/queue-4.4/series b/queue-4.4/series index 10f54003e24..a01b884c2a2 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -121,3 +121,13 @@ pci-hotplug-acpi-fix-context-refcounting-in-acpiphp_grab_context.patch btrfs-only-search-for-left_info-if-there-is-no-right_info-in-try_merge_free_space.patch btrfs-fix-memory-leaks-after-failure-to-lookup-checksums-during-inode-logging.patch powerpc-fix-circular-dependency-between-percpu.h-and-mmu.h.patch +net-ethernet-stmmac-disable-hardware-multicast-filter.patch +net-stmmac-dwmac1000-provide-multicast-filter-fallback.patch +md-raid5-fix-force-reconstruct-write-io-stuck-in-degraded-raid5.patch +bcache-allocate-meta-data-pages-as-compound-pages.patch +mac80211-fix-misplaced-while-instead-of-if.patch +mips-cpu-0-is-not-hotpluggable.patch +ext2-fix-missing-percpu_counter_inc.patch +ocfs2-change-slot-number-type-s16-to-u16.patch +kprobes-fix-null-pointer-dereference-at-kprobe_ftrace_handler.patch +pseries-fix-64-bit-logical-memory-block-panic.patch