[RFC PATCH 04/11] drivers/base/devcoredump: convert devcd_count to counter_atomic

From: Shuah Khan
Date: Tue Sep 22 2020 - 21:44:24 EST


counter_atomic is introduced to be used when a variable is used as
a simple counter and doesn't guard object lifetimes. This clearly
differentiates atomic_t usages that guard object lifetimes.

counter_atomic variables will wrap around to 0 when it overflows and
should not be used to guard resource lifetimes, device usage and
open counts that control state changes, and pm states.

devcd_count is used to track dev_coredumpm device count and used in
device name string. It doesn't guard object lifetimes, device usage
counts, device open counts, and pm states. There is very little chance
of this counter overflowing. Convert it to use counter_atomic.

This conversion doesn't change the oveflow wrap around behavior.

Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
---
drivers/base/devcoredump.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/base/devcoredump.c b/drivers/base/devcoredump.c
index e42d0b514384..d719424d1e0b 100644
--- a/drivers/base/devcoredump.c
+++ b/drivers/base/devcoredump.c
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/workqueue.h>
+#include <linux/counters.h>

static struct class devcd_class;

@@ -255,7 +256,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
void *data, size_t datalen),
void (*free)(void *data))
{
- static atomic_t devcd_count = ATOMIC_INIT(0);
+ static struct counter_atomic devcd_count = COUNTER_ATOMIC_INIT(0);
struct devcd_entry *devcd;
struct device *existing;

@@ -286,7 +287,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
device_initialize(&devcd->devcd_dev);

dev_set_name(&devcd->devcd_dev, "devcd%d",
- atomic_inc_return(&devcd_count));
+ counter_atomic_inc_return(&devcd_count));
devcd->devcd_dev.class = &devcd_class;

if (device_add(&devcd->devcd_dev))
--
2.25.1