Take a look here.
This function sets a new share value for a pool, now there are no checks that new_share != share and as such whenever new_share == share the protocol unnecessarily (wrongly attempts to remove via share.saturating_sub(new_share).
Another instance can be seen here, where protocol in all instances of updating the amounts dont check if the provided amount is not already the stored amount and as such unnecessarily updates v, see here.
The same idea can also be applied to this update_claim_reward_deduction_rates() function.
Unnecessary code execution, flawed implementation.
As a rule of thumb, all setters should always have equality checkers as passing an equal to the already stored value hints a mistake and maybe this attempt to add/remove was meant for a different pool.
