i2c: core: ratelimit 'transfer when suspended' errors
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Thu, 25 Apr 2019 14:19:47 +0000 (16:19 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Fri, 3 May 2019 13:25:00 +0000 (15:25 +0200)
commit4db61c2a16fce2ef85d82751de4ba43a39347cfb
tree51a9594eadc68b7fc923d3c838689333f94bc035
parentd00afd5ede1c29a6dc59be2d7fb7d6ef28eb85c5
i2c: core: ratelimit 'transfer when suspended' errors

There are two problems with WARN_ON() here. One: It is not ratelimited.
Two: We don't see which adapter was used when trying to transfer
something when already suspended. Implement a custom ratelimit once per
adapter and use dev_WARN there. This fixes both issues. Drawback is that
we don't see if multiple drivers are trying to transfer with the same
adapter while suspended. They need to be discovered one after the other
now. This is better than a high CPU load because a really broken driver
might try to resend endlessly.

Fixes: 9ac6cb5fbb17 ("i2c: add suspended flag and accessors for i2c adapters")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@vger.kernel.org # v5.1+
drivers/i2c/i2c-core-base.c
include/linux/i2c.h