On Sun, Mar 26, 2023 at 01:53:27PM +0900, Sergey Senozhatsky wrote: > > > + if (kstrtobool(val, &res)) > > > + return -EINVAL; > > > + > > > + /* no change required */ > > > + if (res == *(bool *)kp->arg) > > > + return 0; > > > > Bool kernel param can be any of these letters 'YyTt1NnFf0'. Doing things > > to kp->arg outside of kernel/params.c is not going to be easy, let's not > > even try. > > Please disregard my previous email. kp->arg is always true or false > at this point. I'd still prefer to not do kp->arg in zswap. The whole parameter handling in zswap is a mess and I don't really have a good idea how to solve it all. But for this "paramter not changed" case I think we can helper a lot by adding a core moduleparam.h helper to encapsule it. I.e.: static inline bool param_bool_unchanged(bool val, const struct kernel_param *kp) return val == *(bool *)kp->arg); } and at least keep it out of zswap.