yushuailong opened a new pull request, #19972:
URL: https://github.com/apache/nuttx/pull/19972

   ## Summary
   
   This PR fixes two bugs in the SCHED_SPORADIC handling of the scheduler, both 
found while testing sporadic policy switching:
    
   1. **sched_setscheduler()**: The policy flag bits were cleared *before* the 
`switch (policy)` statement. Since `TCB_FLAG_SCHED_FIFO` is 0, the checks for 
"was the task previously SCHED_SPORADIC" inside the SCHED_FIFO/SCHED_RR cases 
could never be true. As a result `nxsched_stop_sporadic()` was never called 
when a sporadic task switched to another policy, leaking the `sporadic` state 
and its replenishment timers; a sporadic-to-sporadic reconfiguration ran 
`nxsched_initialize_sporadic()` instead of reset, leaking the old state. The 
flags are now cleared only after the previous policy has been evaluated.
   
   2. **sched_setparam()**: `set_sporadic_param()` tested `rtcb` (the calling 
task) instead of `tcb` (the task being modified). A cross-task 
`sched_setparam()` therefore never updated the target's sporadic parameters, 
and if the *caller* was itself sporadic while the target was not, it would 
reset a task with no sporadic state (NULL-pointer / assertion failure) and 
write parameters into the caller's own sporadic state.
   
   ## Impact
   
   Bug fix only, no API change. No new feature.
   
   ## Testing
   
   ci test
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to