When in the list_for_each_entry interation, reload of p->state->settings with a local setting from old_state will makes the list interation in a infite loop.
Signed-off-by: Maria Yu quic_aiquny@quicinc.com --- drivers/pinctrl/core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 1fa89be29b8f..f2977eb65522 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -1262,17 +1262,17 @@ static void pinctrl_link_add(struct pinctrl_dev *pctldev, static int pinctrl_commit_state(struct pinctrl *p, struct pinctrl_state *state) { struct pinctrl_setting *setting, *setting2; - struct pinctrl_state *old_state = p->state; + struct pinctrl_state *old_state = READ_ONCE(p->state); int ret;
- if (p->state) { + if (old_state) { /* * For each pinmux setting in the old state, forget SW's record * of mux owner for that pingroup. Any pingroups which are * still owned by the new state will be re-acquired by the call * to pinmux_enable_setting() in the loop below. */ - list_for_each_entry(setting, &p->state->settings, node) { + list_for_each_entry(setting, &old_state->settings, node) { if (setting->type != PIN_MAP_TYPE_MUX_GROUP) continue; pinmux_disable_setting(setting);
base-commit: 9bacdd8996c77c42ca004440be610692275ff9d0
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html#opti...
Rule: add the tag "Cc: stable@vger.kernel.org" in the sign-off area to have the patch automatically included in the stable tree. Subject: [PATCH] pinctrl: avoid reload of p state in interation Link: https://lore.kernel.org/stable/20231114085258.2378-1-quic_aiquny%40quicinc.c...
Hi Maria,
thanks for your patch!
On Tue, Nov 14, 2023 at 9:54 AM Maria Yu quic_aiquny@quicinc.com wrote:
When in the list_for_each_entry interation, reload of p->state->settings with a local setting from old_state will makes the list interation in a infite loop.
Signed-off-by: Maria Yu quic_aiquny@quicinc.com
This makes sense in a way, since this is a compiler-dependent problem, can you state in the commit message which compiler and architecture you see this on?
If it is a regression, should this also be queued for stable? (I guess so?)
Yours, Linus Walleij
On 11/14/2023 9:21 PM, Linus Walleij wrote:
Hi Maria,
thanks for your patch!
On Tue, Nov 14, 2023 at 9:54 AM Maria Yu quic_aiquny@quicinc.com wrote:
When in the list_for_each_entry interation, reload of p->state->settings with a local setting from old_state will makes the list interation in a infite loop.
Signed-off-by: Maria Yu quic_aiquny@quicinc.com
This makes sense in a way, since this is a compiler-dependent problem, can you state in the commit message which compiler and architecture you see this on?
I have a crash dump which caused by this issue which is using Clang 10.0, arm64, Linux Version 4.19. Thx for your suggestion, I will put this information in the commit message.
If it is a regression, should this also be queued for stable? (I guess so?)
This is a corner case which is very hard to reproduce in product, I suggest this fix to be queued for stable.
Yours, Linus Walleij
Wed, Nov 15, 2023 at 08:56:35AM +0800, Aiqun(Maria) Yu kirjoitti:
On 11/14/2023 9:21 PM, Linus Walleij wrote:
On Tue, Nov 14, 2023 at 9:54 AM Maria Yu quic_aiquny@quicinc.com wrote:
...
This makes sense in a way, since this is a compiler-dependent problem, can you state in the commit message which compiler and architecture you see this on?
I have a crash dump which caused by this issue which is using Clang 10.0, arm64, Linux Version 4.19. Thx for your suggestion, I will put this information in the commit message.
Please, also add a kernel version and a few (most important) lines from the crash.
If it is a regression, should this also be queued for stable? (I guess so?)
This is a corner case which is very hard to reproduce in product, I suggest this fix to be queued for stable.
Please, provide a respective Fixes tag.
On 11/15/2023 10:07 AM, andy.shevchenko@gmail.com wrote:
Wed, Nov 15, 2023 at 08:56:35AM +0800, Aiqun(Maria) Yu kirjoitti:
On 11/14/2023 9:21 PM, Linus Walleij wrote:
On Tue, Nov 14, 2023 at 9:54 AM Maria Yu quic_aiquny@quicinc.com wrote:
...
This makes sense in a way, since this is a compiler-dependent problem, can you state in the commit message which compiler and architecture you see this on?
I have a crash dump which caused by this issue which is using Clang 10.0, arm64, Linux Version 4.19. Thx for your suggestion, I will put this information in the commit message.
Please, also add a kernel version and a few (most important) lines from the crash.
Thx for the suggetion. Will add kernel version as well.
If it is a regression, should this also be queued for stable? (I guess so?)
This is a corner case which is very hard to reproduce in product, I suggest this fix to be queued for stable.
Please, provide a respective Fixes tag.
Thx for remind. Will do.
linux-stable-mirror@lists.linaro.org