From: Uwe Kleine-König Date: Mon, 7 Jan 2019 19:49:37 +0000 (+0100) Subject: pwm: Don't use memcmp() to compare state variables X-Git-Tag: v5.1-rc1~38^2~23 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=309b32fb97d8cf0771373fb55e16b2852840c9aa;p=uclinux-h8%2Flinux.git pwm: Don't use memcmp() to compare state variables Given that struct pwm_state is sparse (at least on some platforms), variables of this type might represent the same state because all fields are pairwise identical but still memcmp() returns a difference because some of the unused bits are different. To prevent surprises compare member by member instead of the whole occupied memory. Signed-off-by: Uwe Kleine-König Signed-off-by: Thierry Reding --- diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 1581f6ab1b1f..253a459fe0d8 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -472,7 +472,10 @@ int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state) state->duty_cycle > state->period) return -EINVAL; - if (!memcmp(state, &pwm->state, sizeof(*state))) + if (state->period == pwm->state.period && + state->duty_cycle == pwm->state.duty_cycle && + state->polarity == pwm->state.polarity && + state->enabled == pwm->state.enabled) return 0; if (pwm->chip->ops->apply) {