Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp444626pxb; Thu, 21 Apr 2022 03:14:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyTGUJEcfyzbe4zYeHpAE92/gV2B4TDLzxrYs73ebzU+VBW8jD9HzrD9DwcTY6rx5b+UhcC X-Received: by 2002:a17:907:72cb:b0:6ef:aecf:1bd7 with SMTP id du11-20020a17090772cb00b006efaecf1bd7mr17710295ejc.515.1650536079831; Thu, 21 Apr 2022 03:14:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650536079; cv=none; d=google.com; s=arc-20160816; b=YhzpQ5iuQT3Gj1QgWQXhstbaILbaOFtj/aPwPlzzJrcQa4k/RDfIFuiuIsRL1bEa8I 8KMUpHcVSACqPN2m2o/gn2pvHYeiD/OnlDLLBF+Me3+TToYKc+cD9AGL0XKgwVDIa/YE 94rF6G3eH4YxEFmQKAtcg9qh32U7ZEcxJIfwPDViWmuWUi1ZF3nPn4n/CW8YLtvG5tdW RX6JAIEfcR6KgAj9z5SBoToDTXNIqRSHi+XWkqlr+xpRZxcoNy2EPNVQ/t0fPFgo6u/i V8DCCWrMJHhzzii6YIf9x76j1bmXPXr593J3OTBbmmV2ZAG5hK44PR9UOKNapIw6fIj1 hQFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id; bh=wxWHaulLIaPniIpiee8wt0npamrPAe31+kO1RikPE28=; b=tFElwu9eMH3hEx3xhNlPRBhHG4/+iHEj5bIcDT4/Q7/xId8r+DXARKSGk9OMpIiy5L PI+TDzwLQuGMdCr43BT+FdOQy0ROegwyfYmh760XW1dfMyrF+rJ0LiLOj6HBDvWR1rjW 3nvxAy9Oex+YkmAKKF7K9SxWG0AMEsSZdfk/wTCnhZlwU5j5sbDsGFhEVs+6sWtLyooz YzBXGLO9KtOvyFqViF2hrFwaNZfuDhdKHtGiTbWL5SPQ4QL4vLfXJmZy8+jP7czKvsCF GuAcLuyQq6zCDV63JTWtorjiiteIKrLMUJA5gLKIVhq5/X2Au983loJYra/q9QHe+ep7 bZJQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dv25-20020a170906b81900b006e8732d354csi3316261ejb.217.2022.04.21.03.14.04; Thu, 21 Apr 2022 03:14:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347136AbiDTBaT (ORCPT + 99 others); Tue, 19 Apr 2022 21:30:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232010AbiDTBaT (ORCPT ); Tue, 19 Apr 2022 21:30:19 -0400 Received: from www262.sakura.ne.jp (www262.sakura.ne.jp [202.181.97.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A46E245A2 for ; Tue, 19 Apr 2022 18:27:34 -0700 (PDT) Received: from fsav112.sakura.ne.jp (fsav112.sakura.ne.jp [27.133.134.239]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 23K1RECK068633; Wed, 20 Apr 2022 10:27:14 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav112.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav112.sakura.ne.jp); Wed, 20 Apr 2022 10:27:14 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav112.sakura.ne.jp) Received: from [192.168.1.9] (M106072142033.v4.enabler.ne.jp [106.72.142.33]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 23K1RDNr068630 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NO); Wed, 20 Apr 2022 10:27:14 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Message-ID: <35da6cb2-910f-f892-b27a-4a8bac9fd1b1@I-love.SAKURA.ne.jp> Date: Wed, 20 Apr 2022 10:27:11 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Content-Language: en-US To: Tudor Ambarus , Herbert Xu , "David S. Miller" , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea Cc: linux-crypto@vger.kernel.org From: Tetsuo Handa Subject: [PATCH] crypto: atmel - Avoid flush_scheduled_work() usage Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Flushing system-wide workqueues is dangerous and will be forbidden. Replace system_wq with local atmel_wq. Link: https://lkml.kernel.org/r/49925af7-78a8-a3dd-bce6-cfc02e1a9236@I-love.SAKURA.ne.jp Signed-off-by: Tetsuo Handa --- Note: This patch is only compile tested. drivers/crypto/atmel-ecc.c | 2 +- drivers/crypto/atmel-i2c.c | 24 +++++++++++++++++++++++- drivers/crypto/atmel-i2c.h | 1 + drivers/crypto/atmel-sha204a.c | 2 +- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/atmel-ecc.c b/drivers/crypto/atmel-ecc.c index 333fbefbbccb..59a57279e77b 100644 --- a/drivers/crypto/atmel-ecc.c +++ b/drivers/crypto/atmel-ecc.c @@ -398,7 +398,7 @@ static int __init atmel_ecc_init(void) static void __exit atmel_ecc_exit(void) { - flush_scheduled_work(); + atmel_i2c_flush_queue(); i2c_del_driver(&atmel_ecc_driver); } diff --git a/drivers/crypto/atmel-i2c.c b/drivers/crypto/atmel-i2c.c index 6fd3e969211d..226c55bfb9d6 100644 --- a/drivers/crypto/atmel-i2c.c +++ b/drivers/crypto/atmel-i2c.c @@ -263,6 +263,8 @@ static void atmel_i2c_work_handler(struct work_struct *work) work_data->cbk(work_data, work_data->areq, status); } +static struct workqueue_struct *atmel_wq; + void atmel_i2c_enqueue(struct atmel_i2c_work_data *work_data, void (*cbk)(struct atmel_i2c_work_data *work_data, void *areq, int status), @@ -272,10 +274,16 @@ void atmel_i2c_enqueue(struct atmel_i2c_work_data *work_data, work_data->areq = areq; INIT_WORK(&work_data->work, atmel_i2c_work_handler); - schedule_work(&work_data->work); + queue_work(atmel_wq, &work_data->work); } EXPORT_SYMBOL(atmel_i2c_enqueue); +void atmel_i2c_flush_queue(void) +{ + flush_workqueue(atmel_wq); +} +EXPORT_SYMBOL(atmel_i2c_flush_queue); + static inline size_t atmel_i2c_wake_token_sz(u32 bus_clk_rate) { u32 no_of_bits = DIV_ROUND_UP(TWLO_USEC * bus_clk_rate, USEC_PER_SEC); @@ -372,6 +380,20 @@ int atmel_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) } EXPORT_SYMBOL(atmel_i2c_probe); +static int __init atmel_i2c_init(void) +{ + atmel_wq = alloc_workqueue("atmel_wq", 0, 0); + return atmel_wq ? 0 : -ENOMEM; +} + +static void __exit atmel_i2c_exit(void) +{ + destroy_workqueue(atmel_wq); +} + +module_init(atmel_i2c_init); +module_exit(atmel_i2c_exit); + MODULE_AUTHOR("Tudor Ambarus "); MODULE_DESCRIPTION("Microchip / Atmel ECC (I2C) driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/crypto/atmel-i2c.h b/drivers/crypto/atmel-i2c.h index 63b97b104f16..48929efe2a5b 100644 --- a/drivers/crypto/atmel-i2c.h +++ b/drivers/crypto/atmel-i2c.h @@ -173,6 +173,7 @@ void atmel_i2c_enqueue(struct atmel_i2c_work_data *work_data, void (*cbk)(struct atmel_i2c_work_data *work_data, void *areq, int status), void *areq); +void atmel_i2c_flush_queue(void); int atmel_i2c_send_receive(struct i2c_client *client, struct atmel_i2c_cmd *cmd); diff --git a/drivers/crypto/atmel-sha204a.c b/drivers/crypto/atmel-sha204a.c index c96c14e7dab1..2168f877bd43 100644 --- a/drivers/crypto/atmel-sha204a.c +++ b/drivers/crypto/atmel-sha204a.c @@ -159,7 +159,7 @@ static int __init atmel_sha204a_init(void) static void __exit atmel_sha204a_exit(void) { - flush_scheduled_work(); + atmel_i2c_flush_queue(); i2c_del_driver(&atmel_sha204a_driver); } -- 2.32.0