On Wed, Jan 10, 2018 at 02:59:12PM +0800, ShuFanLee wrote:
> +static inline void rt1711h_poll_ctrl(struct rt1711h_chip *chip)
> +{
> +     cancel_delayed_work_sync(&chip->poll_work);
> +
> +     if (atomic_read(&chip->poll_count) == 0) {
> +             atomic_inc(&chip->poll_count);
> +             cpu_idle_poll_ctrl(true);
> +     }
> +
> +     schedule_delayed_work(&chip->poll_work, msecs_to_jiffies(40));
> +}

This is very odd, and not good.  What are you trying to do here?  And
why are you thinking that poll_count should be an atomic variable?

This feels really strange, and not something you should be doing in an
irq handler, right?

thanks,

greg k-h

Reply via email to