Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp567853imw; Mon, 4 Jul 2022 15:13:09 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vrQ7r0SAeG/9fljV+zyCRKUfIIdNXPhBC345Ic4fSU4bKhlV1281QtPoiC6xZP3aw1+Qx4 X-Received: by 2002:a05:6402:405:b0:433:426d:7d59 with SMTP id q5-20020a056402040500b00433426d7d59mr42780392edv.122.1656972789771; Mon, 04 Jul 2022 15:13:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656972789; cv=none; d=google.com; s=arc-20160816; b=goS2ehazZR5JjXdARavx2PCE7j9rW7nNSQSz2JoFYbqw9CE1N7kp/DcYLEvgOpWrUA ed4zWI+OJ9F2rug5tVxXjCnTJ1Oy3KIGvJJIrr9q81Q9HuNOZX7dQBhdjDHghIpv/6Tl 04txjkZU9G9Cfdr/PZMtTF0n3I3JLAwZY1PcCPFpvS5Y/SQmoRrjzhyD56yqF8F2kkzs Ikq12irn+v3BLS2vblkJH6KQsqlNiW99ww83++cOIU4/uqk4rPqjGkuG9F/FpHlVnv0g fVmJFPYkEP1W9imt878ipS66mrBThl5Cmkh+VWOa+aoFLhNATw+Va8GCzJNujHc0LD5U jS4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:references:in-reply-to:subject:cc:to:dkim-signature :from; bh=uHc0lx2Z1D2lCUxqB1vM9wi5L+4xwm0drVSSH5wNNwc=; b=fdTOoNdque/5aEyGne6gydekG0DFMZh+vYQyRy5DG4RUQkJ0lHR9VyZGAZ7zvnG17r wLP+1Z7rlVNe36Y/M44yiyghuvY5jSkPDvF3iUpBJPQw+OuT6FI0TZTjnt45J/13P8VU RqQZh3b9hYGI2TA4EdVKoxF4mTw2dSYBNjsxRokR/v0n3AzU4PeMEyH1Ymw7e/F8KL+J lG4Cfwi0DZBByLDua1miGVcV20Cid3xrCgOkgxEJIFdupljoEBzgnT/1vxLMJkb9VZDQ bcY2aLYmeOoo9Ugu/m/Zo6tyTlTb/9FEzeKu1vVscmBri0cAKg2XoHFQs40nE6zjjKI9 WxqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@toke.dk header.s=20161023 header.b="mDS/Tg0O"; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=toke.dk Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hv20-20020a17090760d400b00726d06852besi12206519ejc.148.2022.07.04.15.12.46; Mon, 04 Jul 2022 15:13:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-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; dkim=pass header.i=@toke.dk header.s=20161023 header.b="mDS/Tg0O"; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=toke.dk Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233381AbiGDWEw (ORCPT + 66 others); Mon, 4 Jul 2022 18:04:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229705AbiGDWEu (ORCPT ); Mon, 4 Jul 2022 18:04:50 -0400 Received: from mail.toke.dk (mail.toke.dk [IPv6:2a0c:4d80:42:2001::664]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCBBE266C; Mon, 4 Jul 2022 15:04:48 -0700 (PDT) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1656972287; bh=IGiBHguNm0JhMDuYYUOhaSJP4Atb4sExjleMTY3V9ew=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=mDS/Tg0OxqatuII1EkZ9+DcicKi2FIYR9gYQMH4vj0uaJ1G4zK/JpyR07EtvHnojj pif0Is6VYbanO43ONdNRSb9HRaok6cHW2n0R1q+h29GFyJTG4HgUGpIf5MH7HU1aOi Pc8a1z9sxH7q2+Pk8kDzJkNhDFrHg4DA9W8lH/9aVhYLjO0ywn0dEfvy5j4CavVPZX tIvBtECKQdej3zt2P/EeRVyvJstjBdEZTaCifSI5W13HOpPSlt3SUY61Eed31AtcBH CAjnKAfHb0bk1cFFO0pQn8Pxm6AGdHS5NlbTr0tOrfecXoASTnwDUNiRGtmpw0pY68 FxabSybILZxQA== To: "Jason A. Donenfeld" , Herbert Xu , linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org Cc: Gregory Erwin , Kalle Valo , Rui Salvaterra , stable@vger.kernel.org Subject: Re: [PATCH v8] ath9k: let sleep be interrupted when unregistering hwrng In-Reply-To: <20220629114240.946411-1-Jason@zx2c4.com> References: <20220629114240.946411-1-Jason@zx2c4.com> Date: Tue, 05 Jul 2022 00:04:46 +0200 X-Clacks-Overhead: GNU Terry Pratchett Message-ID: <874jzw8rgh.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,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-wireless@vger.kernel.org "Jason A. Donenfeld" writes: > There are two deadlock scenarios that need addressing, which cause > problems when the computer goes to sleep, the interface is set down, and > hwrng_unregister() is called. When the deadlock is hit, sleep is delayed > for tens of seconds, causing it to fail. These scenarios are: > > 1) The hwrng kthread can't be stopped while it's sleeping, because it > uses msleep_interruptible() instead of schedule_timeout_interruptible(= ). > The fix is a simple moving to the correct function. At the same time, > we should cleanup a common and useless dmesg splat in the same area. > > 2) A normal user thread can't be interrupted by hwrng_unregister() while > it's sleeping, because hwrng_unregister() is called from elsewhere. > The solution here is to keep track of which thread is currently > reading, and asleep, and signal that thread when it's time to > unregister. There's a bit of book keeping required to prevent > lifetime issues on current. > > Reported-by: Gregory Erwin > Cc: Toke H=C3=B8iland-J=C3=B8rgensen > Cc: Kalle Valo > Cc: Rui Salvaterra > Cc: Herbert Xu > Cc: stable@vger.kernel.org > Fixes: fcd09c90c3c5 ("ath9k: use hw_random API instead of directly dumpin= g into random.c") > Link: https://lore.kernel.org/all/CAO+Okf6ZJC5-nTE_EJUGQtd8JiCkiEHytGgDsF= GTEjs0c00giw@mail.gmail.com/ > Link: https://lore.kernel.org/lkml/CAO+Okf5k+C+SE6pMVfPf-d8MfVPVq4PO7EY8H= ys_DVXtent3HA@mail.gmail.com/ > Link: https://bugs.archlinux.org/task/75138 > Signed-off-by: Jason A. Donenfeld With the change to EXPORT_SYMBOL_GPL() for wake_up_state that Kalle has kindly agreed to fix up while applying: Acked-by: Toke H=C3=B8iland-J=C3=B8rgensen