From: Marc Kleine-Budde mkl@pengutronix.de
[ Upstream commit d36673f5918c8fd3533f7c0d4bac041baf39c7bb ]
This patch remove the return at the end of the void function can_dellink().
Signed-off-by: Marc Kleine-Budde mkl@pengutronix.de Signed-off-by: Lee Jones lee.jones@linaro.org --- drivers/net/can/dev.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 9dd968ee792e..e0d067701edc 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c @@ -1041,7 +1041,6 @@ static int can_newlink(struct net *src_net, struct net_device *dev,
static void can_dellink(struct net_device *dev, struct list_head *head) { - return; }
static struct rtnl_link_ops can_link_ops __read_mostly = {
From: Hari Vyas hari.vyas@broadcom.com
[ Upstream commit e4ba15debcfd27f60d43da940a58108783bff2a6 ]
The bad_mode() handler is called if we encounter an uunknown exception, with the expectation that the subsequent call to panic() will halt the system. Unfortunately, if the exception calling bad_mode() is taken from EL0, then the call to die() can end up killing the current user task and calling schedule() instead of falling through to panic().
Remove the die() call altogether, since we really want to bring down the machine in this "impossible" case.
Signed-off-by: Hari Vyas hari.vyas@broadcom.com Signed-off-by: Will Deacon will.deacon@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com Signed-off-by: Lee Jones lee.jones@linaro.org --- arch/arm64/kernel/traps.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index 6b4579e07aa2..02710f99c137 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -448,7 +448,6 @@ asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr) pr_crit("Bad mode in %s handler detected, code 0x%08x -- %s\n", handler[reason], esr, esr_get_class_string(esr));
- die("Oops - bad mode", regs, 0); local_irq_disable(); panic("bad mode"); }
From: Bo Yan byan@nvidia.com
[ Upstream commit 703cbaa601ff3fb554d1246c336ba727cc083ea0 ]
cpufreq_resume can be called even without preceding cpufreq_suspend. This can happen in following scenario:
suspend_devices_and_enter --> dpm_suspend_start --> dpm_prepare --> device_prepare : this function errors out --> dpm_suspend: this is skipped due to dpm_prepare failure this means cpufreq_suspend is skipped over --> goto Recover_platform, due to previous error --> goto Resume_devices --> dpm_resume_end --> dpm_resume --> cpufreq_resume
In case schedutil is used as frequency governor, cpufreq_resume will eventually call sugov_start, which does following:
memset(sg_cpu, 0, sizeof(*sg_cpu)); ....
This effectively erases function pointer for frequency update, causing crash later on. The function pointer would have been set correctly if subsequent cpufreq_add_update_util_hook runs successfully, but that function returns earlier because cpufreq_suspend was not called:
if (WARN_ON(per_cpu(cpufreq_update_util_data, cpu))) return;
The fix is to check cpufreq_suspended first, if it's false, that means cpufreq_suspend was not called in the first place, so do not resume cpufreq.
Signed-off-by: Bo Yan byan@nvidia.com Acked-by: Viresh Kumar viresh.kumar@linaro.org [ rjw: Dropped printing a message ] Signed-off-by: Rafael J. Wysocki rafael.j.wysocki@intel.com Signed-off-by: Lee Jones lee.jones@linaro.org --- drivers/cpufreq/cpufreq.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 0836d2939c7a..a68a2d5ac042 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -1627,6 +1627,9 @@ void cpufreq_resume(void) if (!cpufreq_driver) return;
+ if (unlikely(!cpufreq_suspended)) + return; + cpufreq_suspended = false;
if (!has_target())
From: Bart Van Assche bart.vanassche@sandisk.com
[ Upstream commit 2e91c3694181dc500faffec16c5aaa0ac5e15449 ]
After QUEUE_FLAG_DYING has been set any code that is waiting in get_request() should be woken up. But to get this behaviour blk_set_queue_dying() must be used instead of only setting QUEUE_FLAG_DYING.
Signed-off-by: Bart Van Assche bart.vanassche@sandisk.com Signed-off-by: Mike Snitzer snitzer@redhat.com Signed-off-by: Lee Jones lee.jones@linaro.org --- drivers/md/dm.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 3d9a80759d95..c752c55f0bb2 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -2939,9 +2939,7 @@ static void __dm_destroy(struct mapped_device *md, bool wait) set_bit(DMF_FREEING, &md->flags); spin_unlock(&_minor_lock);
- spin_lock_irq(q->queue_lock); - queue_flag_set(QUEUE_FLAG_DYING, q); - spin_unlock_irq(q->queue_lock); + blk_set_queue_dying(q);
if (dm_request_based(md) && md->kworker_task) flush_kthread_worker(&md->kworker);
From: Adrian Hunter adrian.hunter@intel.com
[ Upstream commit d806b46e5f496a6335ebd7f8432d2533507ce9a2 ]
Apparently a cut-and-paste error, 'do_data_tag' is using 'brq' for data size even though 'brq' has not been set up. Instead use blk_rq_sectors().
Signed-off-by: Adrian Hunter adrian.hunter@intel.com Reviewed-by: Shawn Lin shawn.lin@rock-chips.com Signed-off-by: Ulf Hansson ulf.hansson@linaro.org Signed-off-by: Lee Jones lee.jones@linaro.org --- drivers/mmc/card/block.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index f600bdcaf5b4..07592e428755 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -1772,8 +1772,7 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq, do_data_tag = (card->ext_csd.data_tag_unit_size) && (prq->cmd_flags & REQ_META) && (rq_data_dir(prq) == WRITE) && - ((brq->data.blocks * brq->data.blksz) >= - card->ext_csd.data_tag_unit_size); + blk_rq_bytes(prq) >= card->ext_csd.data_tag_unit_size; /* Argument of CMD23 */ packed_cmd_hdr[(i * 2)] = cpu_to_le32( (do_rel_wr ? MMC_CMD23_ARG_REL_WR : 0) |
From: Gang He ghe@suse.com
[ Upstream commit a634644751c46238df58bbfe992e30c1668388db ]
Remove ocfs2_is_o2cb_active(). We have similar functions to identify which cluster stack is being used via osb->osb_cluster_stack.
Secondly, the current implementation of ocfs2_is_o2cb_active() is not totally safe. Based on the design of stackglue, we need to get ocfs2_stack_lock before using ocfs2_stack related data structures, and that active_stack pointer can be NULL in the case of mount failure.
Link: http://lkml.kernel.org/r/1495441079-11708-1-git-send-email-ghe@suse.com Signed-off-by: Gang He ghe@suse.com Reviewed-by: Joseph Qi jiangqi903@gmail.com Reviewed-by: Eric Ren zren@suse.com Acked-by: Changwei Ge ge.changwei@h3c.com Cc: Mark Fasheh mark@fasheh.com Cc: Joel Becker jlbec@evilplan.org Cc: Junxiao Bi junxiao.bi@oracle.com Signed-off-by: Andrew Morton akpm@linux-foundation.org Signed-off-by: Linus Torvalds torvalds@linux-foundation.org Signed-off-by: Lee Jones lee.jones@linaro.org --- fs/ocfs2/dlmglue.c | 2 +- fs/ocfs2/stackglue.c | 6 ------ fs/ocfs2/stackglue.h | 3 --- 3 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index 555b57a16499..faaf8bfd2f52 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c @@ -3426,7 +3426,7 @@ static int ocfs2_downconvert_lock(struct ocfs2_super *osb, * we can recover correctly from node failure. Otherwise, we may get * invalid LVB in LKB, but without DLM_SBF_VALNOTVALID being set. */ - if (!ocfs2_is_o2cb_active() && + if (ocfs2_userspace_stack(osb) && lockres->l_ops->flags & LOCK_TYPE_USES_LVB) lvb = 1;
diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c index 783bcdce5666..5d965e83bd43 100644 --- a/fs/ocfs2/stackglue.c +++ b/fs/ocfs2/stackglue.c @@ -48,12 +48,6 @@ static char ocfs2_hb_ctl_path[OCFS2_MAX_HB_CTL_PATH] = "/sbin/ocfs2_hb_ctl"; */ static struct ocfs2_stack_plugin *active_stack;
-inline int ocfs2_is_o2cb_active(void) -{ - return !strcmp(active_stack->sp_name, OCFS2_STACK_PLUGIN_O2CB); -} -EXPORT_SYMBOL_GPL(ocfs2_is_o2cb_active); - static struct ocfs2_stack_plugin *ocfs2_stack_lookup(const char *name) { struct ocfs2_stack_plugin *p; diff --git a/fs/ocfs2/stackglue.h b/fs/ocfs2/stackglue.h index e1b30931974d..66334a30cea8 100644 --- a/fs/ocfs2/stackglue.h +++ b/fs/ocfs2/stackglue.h @@ -298,7 +298,4 @@ void ocfs2_stack_glue_set_max_proto_version(struct ocfs2_protocol_version *max_p int ocfs2_stack_glue_register(struct ocfs2_stack_plugin *plugin); void ocfs2_stack_glue_unregister(struct ocfs2_stack_plugin *plugin);
-/* In ocfs2_downconvert_lock(), we need to know which stack we are using */ -int ocfs2_is_o2cb_active(void); - #endif /* STACKGLUE_H */
On Wed, Nov 27, 2019 at 07:21:19AM +0000, Lee Jones wrote:
From: Marc Kleine-Budde mkl@pengutronix.de
[ Upstream commit d36673f5918c8fd3533f7c0d4bac041baf39c7bb ]
This patch remove the return at the end of the void function can_dellink().
Signed-off-by: Marc Kleine-Budde mkl@pengutronix.de Signed-off-by: Lee Jones lee.jones@linaro.org
drivers/net/can/dev.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 9dd968ee792e..e0d067701edc 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c @@ -1041,7 +1041,6 @@ static int can_newlink(struct net *src_net, struct net_device *dev, static void can_dellink(struct net_device *dev, struct list_head *head) {
- return;
} static struct rtnl_link_ops can_link_ops __read_mostly = { -- 2.24.0
How does this patch meet the stable kernel rules?
greg k-h
On Wed, Nov 27, 2019 at 07:21:19AM +0000, Lee Jones wrote:
From: Marc Kleine-Budde mkl@pengutronix.de
[ Upstream commit d36673f5918c8fd3533f7c0d4bac041baf39c7bb ]
This patch remove the return at the end of the void function can_dellink().
Signed-off-by: Marc Kleine-Budde mkl@pengutronix.de Signed-off-by: Lee Jones lee.jones@linaro.org
drivers/net/can/dev.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 9dd968ee792e..e0d067701edc 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c @@ -1041,7 +1041,6 @@ static int can_newlink(struct net *src_net, struct net_device *dev, static void can_dellink(struct net_device *dev, struct list_head *head) {
- return;
} static struct rtnl_link_ops can_link_ops __read_mostly = { -- 2.24.0
Also, this showed up in 5.4, so why did you not include it in all of your patch series that you sent? I can't take patches for older kernels and skip newer ones for no good reason.
thanks,
greg k-h
On Wed, 27 Nov 2019, Greg KH wrote:
On Wed, Nov 27, 2019 at 07:21:19AM +0000, Lee Jones wrote:
From: Marc Kleine-Budde mkl@pengutronix.de
[ Upstream commit d36673f5918c8fd3533f7c0d4bac041baf39c7bb ]
This patch remove the return at the end of the void function can_dellink().
Signed-off-by: Marc Kleine-Budde mkl@pengutronix.de Signed-off-by: Lee Jones lee.jones@linaro.org
drivers/net/can/dev.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 9dd968ee792e..e0d067701edc 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c @@ -1041,7 +1041,6 @@ static int can_newlink(struct net *src_net, struct net_device *dev, static void can_dellink(struct net_device *dev, struct list_head *head) {
- return;
} static struct rtnl_link_ops can_link_ops __read_mostly = {
Also, this showed up in 5.4, so why did you not include it in all of your patch series that you sent? I can't take patches for older kernels and skip newer ones for no good reason.
Right. I pulled it from the other branches as it wasn't suitable.
Looks like this was left behind.
linux-stable-mirror@lists.linaro.org