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@xxxxxxxxxxxxx> --- 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 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel