Re: [PATCH linux-next] serial: dz: use atomic_inc and atomic_dec instead of atomic_add

From: Jiri Slaby
Date: Thu Oct 13 2022 - 02:24:15 EST


On 12. 10. 22, 12:09, xu.panda668@xxxxxxxxx wrote:
From: Xu Panda <xu.panda@xxxxxxxxxx>

There is a better way for atomic_dec_return and atomic_inc.

While the patch below looks fine, I don't understand this sentence ^^^. Care to reformulate? And please append () when writing about function names.

Reported-by: Zeal Robot <zealci@xxxxxxxxxx>
Signed-off-by: Xu Panda <xu.panda@xxxxxxxxxx>
---
drivers/tty/serial/dz.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/tty/serial/dz.c b/drivers/tty/serial/dz.c
index 829b452daee9..84476cef3278 100644
--- a/drivers/tty/serial/dz.c
+++ b/drivers/tty/serial/dz.c
@@ -404,14 +404,14 @@ static int dz_startup(struct uart_port *uport)
int ret;
u16 tmp;
- irq_guard = atomic_add_return(1, &mux->irq_guard);
+ irq_guard = atomic_inc_return(&mux->irq_guard);
if (irq_guard != 1)
return 0;
ret = request_irq(dport->port.irq, dz_interrupt,
IRQF_SHARED, "dz", mux);
if (ret) {
- atomic_add(-1, &mux->irq_guard);
+ atomic_dec(&mux->irq_guard);
printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq);
return ret;
}
@@ -448,7 +448,7 @@ static void dz_shutdown(struct uart_port *uport)
dz_stop_tx(&dport->port);
spin_unlock_irqrestore(&dport->port.lock, flags);
- irq_guard = atomic_add_return(-1, &mux->irq_guard);
+ irq_guard = atomic_dec_return(&mux->irq_guard);
if (!irq_guard) {
/* Disable interrupts. */
tmp = dz_in(dport, DZ_CSR);
@@ -668,7 +668,7 @@ static void dz_release_port(struct uart_port *uport)
iounmap(uport->membase);
uport->membase = NULL;
- map_guard = atomic_add_return(-1, &mux->map_guard);
+ map_guard = atomic_dec_return(&mux->map_guard);
if (!map_guard)
release_mem_region(uport->mapbase, dec_kn_slot_size);
}
@@ -691,11 +691,11 @@ static int dz_request_port(struct uart_port *uport)
int map_guard;
int ret;
- map_guard = atomic_add_return(1, &mux->map_guard);
+ map_guard = atomic_inc_return(&mux->map_guard);
if (map_guard == 1) {
if (!request_mem_region(uport->mapbase, dec_kn_slot_size,
"dz")) {
- atomic_add(-1, &mux->map_guard);
+ atomic_dec(&mux->map_guard);
printk(KERN_ERR
"dz: Unable to reserve MMIO resource\n");
return -EBUSY;
@@ -703,7 +703,7 @@ static int dz_request_port(struct uart_port *uport)
}
ret = dz_map_port(uport);
if (ret) {
- map_guard = atomic_add_return(-1, &mux->map_guard);
+ map_guard = atomic_dec_return(&mux->map_guard);
if (!map_guard)
release_mem_region(uport->mapbase, dec_kn_slot_size);
return ret;

--
js
suse labs