Skip to content

pimd: fix C-RP processing crash during BSR_PENDING state (backport #22467) - #22566

Merged
donaldsharp merged 2 commits into
stable/10.7from
mergify/bp/stable/10.7/pr-22467
Jul 6, 2026
Merged

pimd: fix C-RP processing crash during BSR_PENDING state (backport #22467)#22566
donaldsharp merged 2 commits into
stable/10.7from
mergify/bp/stable/10.7/pr-22467

Conversation

@Jafaral

@Jafaral Jafaral commented Jul 6, 2026

Copy link
Copy Markdown
Member

manual backport

When a candidate BSR is in BSR_PENDING state (waiting to become
elected), C-RP advertisements may arrive. The bsr_crp_reselect()
function would then call pim_bsm_generate_sched(), which asserts
state == BSR_ELECTED.

Fix by adding a state check in bsr_crp_reselect() before calling
pim_bsm_generate_sched().

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit 6f410e8)
Add two tests for BSR_PENDING state handling:

1. test_pim_bsr_pending_timer_race: Verify BSR_PENDING timer is not
   overwritten by BSM reception. The test removes r1 as BSR candidate,
   lowers then raises r2's priority to force re-entry to BSR_PENDING,
   then re-adds r1 to trigger BSM during r2's PENDING window. Without
   the fix in pim_bsm_update() to skip pim_bs_timer_restart() when in
   BSR_PENDING state, the BSM would overwrite the ~5 second pending
   timer with the 130-second BS liveness timer.

2. test_pim_crp_during_bsr_pending: Verify C-RP advertisements received
   during BSR_PENDING state don't crash. Without the state check in
   bsr_crp_reselect(), pim_bsm_generate_sched() would assert when
   called before BSR_ELECTED.

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit fab17c0)
@greptile-apps

greptile-apps Bot commented Jul 6, 2026

Copy link
Copy Markdown

Target branch is not in the allowed branches list.

@frrbot frrbot Bot added bugfix pim tests Topotests, make check, etc labels Jul 6, 2026
@donaldsharp
donaldsharp merged commit f226bf0 into stable/10.7 Jul 6, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants