Skip to content

Commit 5d4db9c

Browse files
smahto243gregkh
authored andcommitted
staging: gpib: Replace semaphore with completion for one-time signaling
Replaced 'down_interruptible()' and 'up()' calls with 'wait_for_completion_interruptible()' and 'complete()' respectively. The completion API simplifies the code and adheres to kernel best practices for synchronization primitive Signed-off-by: Santosh Mahto <[email protected]> Reviewed-by: Dan Carpenter <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 716eefc commit 5d4db9c

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

drivers/staging/gpib/ni_usb/ni_usb_gpib.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ static void ni_usb_bulk_complete(struct urb *urb)
8585

8686
// printk("debug: %s: status=0x%x, error_count=%i, actual_length=%i\n", __func__,
8787
// urb->status, urb->error_count, urb->actual_length);
88-
up(&context->complete);
88+
complete(&context->complete);
8989
}
9090

9191
static void ni_usb_timeout_handler(struct timer_list *t)
@@ -94,7 +94,7 @@ static void ni_usb_timeout_handler(struct timer_list *t)
9494
struct ni_usb_urb_ctx *context = &ni_priv->context;
9595

9696
context->timed_out = 1;
97-
up(&context->complete);
97+
complete(&context->complete);
9898
};
9999

100100
// I'm using nonblocking loosely here, it only means -EAGAIN can be returned in certain cases
@@ -124,7 +124,7 @@ static int ni_usb_nonblocking_send_bulk_msg(struct ni_usb_priv *ni_priv, void *d
124124
}
125125
usb_dev = interface_to_usbdev(ni_priv->bus_interface);
126126
out_pipe = usb_sndbulkpipe(usb_dev, ni_priv->bulk_out_endpoint);
127-
sema_init(&context->complete, 0);
127+
init_completion(&context->complete);
128128
context->timed_out = 0;
129129
usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, out_pipe, data, data_length,
130130
&ni_usb_bulk_complete, context);
@@ -143,7 +143,7 @@ static int ni_usb_nonblocking_send_bulk_msg(struct ni_usb_priv *ni_priv, void *d
143143
return retval;
144144
}
145145
mutex_unlock(&ni_priv->bulk_transfer_lock);
146-
down(&context->complete); // wait for ni_usb_bulk_complete
146+
wait_for_completion(&context->complete); // wait for ni_usb_bulk_complete
147147
if (context->timed_out) {
148148
usb_kill_urb(ni_priv->bulk_urb);
149149
dev_err(&usb_dev->dev, "%s: killed urb due to timeout\n", __func__);
@@ -210,7 +210,7 @@ static int ni_usb_nonblocking_receive_bulk_msg(struct ni_usb_priv *ni_priv,
210210
}
211211
usb_dev = interface_to_usbdev(ni_priv->bus_interface);
212212
in_pipe = usb_rcvbulkpipe(usb_dev, ni_priv->bulk_in_endpoint);
213-
sema_init(&context->complete, 0);
213+
init_completion(&context->complete);
214214
context->timed_out = 0;
215215
usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, in_pipe, data, data_length,
216216
&ni_usb_bulk_complete, context);
@@ -231,7 +231,7 @@ static int ni_usb_nonblocking_receive_bulk_msg(struct ni_usb_priv *ni_priv,
231231
}
232232
mutex_unlock(&ni_priv->bulk_transfer_lock);
233233
if (interruptible) {
234-
if (down_interruptible(&context->complete)) {
234+
if (wait_for_completion_interruptible(&context->complete)) {
235235
/* If we got interrupted by a signal while
236236
* waiting for the usb gpib to respond, we
237237
* should send a stop command so it will
@@ -243,10 +243,10 @@ static int ni_usb_nonblocking_receive_bulk_msg(struct ni_usb_priv *ni_priv,
243243
/* now do an uninterruptible wait, it shouldn't take long
244244
* for the board to respond now.
245245
*/
246-
down(&context->complete);
246+
wait_for_completion(&context->complete);
247247
}
248248
} else {
249-
down(&context->complete);
249+
wait_for_completion(&context->complete);
250250
}
251251
if (context->timed_out) {
252252
usb_kill_urb(ni_priv->bulk_urb);

drivers/staging/gpib/ni_usb/ni_usb_gpib.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ enum hs_plus_endpoint_addresses {
5656
};
5757

5858
struct ni_usb_urb_ctx {
59-
struct semaphore complete;
59+
struct completion complete;
6060
unsigned timed_out : 1;
6161
};
6262

0 commit comments

Comments
 (0)