[dm-devel] [PATCH 1/6] dm crypt: Use tasklet_setup().
Sebastian Andrzej Siewior
bigeasy at linutronix.de
Sat Feb 13 11:11:41 UTC 2021
tasklet_setup() has the beauty of passing the argument as part of the
structure instead of an integer value which needs casting.
Use tasklet_setup().
Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
---
drivers/md/dm-crypt.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 68be387581a7e..506655e5eecba 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -2211,9 +2211,14 @@ static void kcryptd_crypt(struct work_struct *work)
kcryptd_crypt_write_convert(io);
}
-static void kcryptd_crypt_tasklet(unsigned long work)
+static void kcryptd_crypt_tasklet(struct tasklet_struct *t)
{
- kcryptd_crypt((struct work_struct *)work);
+ struct dm_crypt_io *io = from_tasklet(io, t, tasklet);
+
+ if (bio_data_dir(io->base_bio) == READ)
+ kcryptd_crypt_read_convert(io);
+ else
+ kcryptd_crypt_write_convert(io);
}
static void kcryptd_queue_crypt(struct dm_crypt_io *io)
@@ -2228,7 +2233,7 @@ static void kcryptd_queue_crypt(struct dm_crypt_io *io)
* it is being executed with irqs disabled.
*/
if (in_irq() || irqs_disabled()) {
- tasklet_init(&io->tasklet, kcryptd_crypt_tasklet, (unsigned long)&io->work);
+ tasklet_setup(&io->tasklet, kcryptd_crypt_tasklet);
tasklet_schedule(&io->tasklet);
return;
}
--
2.30.0
More information about the dm-devel
mailing list