On Wed, May 19, 2021 at 09:46:24AM +0530, Rajat Asthana wrote:
Enforce int type on SNDRV_CTL_ELEM_IFACE_MIXER to fix sparse warning:
warning: restricted snd_ctl_elem_iface_t degrades to integer
The iface field in the gb_audio_control struct is of type __u8, but the values stored in it are of type int. So on conversion they are degraded. Adding (__force int) will enforce them not to be degraded.
The patch is fine, but the commit message is not very great. This patch doesn't "enforce" anything or affect the compiled code at all, it just silences a Sparse warning. Here is a better commit message.
Sparse complains that:
warning: restricted snd_ctl_elem_iface_t degrades to integer
I have looked at this code, and the code is fine as-is. Normally we would frown on using the __force directive to silence Sparse warnings but in this case it's fine. Case statements can't be made into __bitwise types. We also can't change the type of "ctl->iface" either because that is part of the user space API.
So just add a (__force int) to make the warning go away.
regards, dan carpenter