Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3580127pxb; Mon, 24 Jan 2022 12:43:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJzpaV3OXA1bGqpTAJjUboFzgyANPwDaN90LuHim1V7WhxekuuWADIkMq9ozV/BKmf1jFVrT X-Received: by 2002:a63:535f:: with SMTP id t31mr12894501pgl.139.1643056983732; Mon, 24 Jan 2022 12:43:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643056983; cv=none; d=google.com; s=arc-20160816; b=dXP+p5gOIsWtNSHYUWm4D8qejP6TQg848Jlu1GejKU5/91t7P5K0yGD723IEljJsp2 iVjY9D7rUQzBEpisDJ7JIzBE2kAp+SDskyYPnZeDpFNAA5/jI8s/kqcNRiD8RrzEccTa l4Y9GucT2pl/hXuz7fzfnygZfM+2nYfqpNwnqraV186tjoyo0LK687kIhJ1A7152s5k+ HZjYt8NuQM2noTyq7pT9LvxnF8HxJKyXhzj3JcuBNTf1pQa5DXQrlarGrClDPCqaBBKM YK/m/l967h2Qg1O9ATm9xSwT7O80zKsS/RAnS8OjWq0hvzsvA3oPAVZFGb6ph8ObTWbX nrAw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ECR0PQ0/Hf0yVO+g7chKkbv/1qcFsS18STOr9ILyzwI=; b=dQwrFU+s/wCnZf3e9YPMoMw0rS8g+40qB/PnEgk+f/qX5NUcIx08Vss/V3n/meHvqM 0JECNw9zTJ3q2+a7cVzlim34ZLNT063S0muLkUFAzd1IctHvg4fe0Ae5xBZFw/1BQop5 LYGWxt0QSuEim8meyV6bMIz0IVYgr9eU/woBoVYLt1OESYa+6L/JU/if/VebmVMFrbYD ReNRxS4b8H1nAHt4RNh+kDBSm9m9GEuSVpsxGheE/k6Ct5JPk8AwHJkfHuch4J9dYULM Src2/a3gZjYSPLNjtG3hbfmCEOWFPFOtzT7CLajEh6NQ7w7UZscVL++qHj965qMooCOB w7BA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=zVAZXlng; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x12si245959pjv.2.2022.01.24.12.42.41; Mon, 24 Jan 2022 12:43:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=zVAZXlng; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351483AbiAXT6H (ORCPT + 99 others); Mon, 24 Jan 2022 14:58:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351391AbiAXT06 (ORCPT ); Mon, 24 Jan 2022 14:26:58 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3B7CC02B74F; Mon, 24 Jan 2022 11:12:29 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 927F460909; Mon, 24 Jan 2022 19:12:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 610A7C340E8; Mon, 24 Jan 2022 19:12:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643051549; bh=T+56S/9BkRyTdv/V9EVsXJQEBPQFzty4gfufVZgmqdk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zVAZXlngkqXiLysRAzNg+ap67H+Na0vn6sPKEquyRIJEKbOqEwhfVB9NRxqX80ue7 2jXfl9Qn9f3SxRAb4XKku49Om2L8JlnbgnyySxVOW0Bq+V2227q6KDmi0fECndoGN9 A3DBORZsur5t4Qjj9Hp34vSvlJftIu73hgJMVifk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nathan Chancellor Subject: [PATCH 4.19 011/239] staging: wlan-ng: Avoid bitwise vs logical OR warning in hfa384x_usb_throttlefn() Date: Mon, 24 Jan 2022 19:40:49 +0100 Message-Id: <20220124183943.475656085@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124183943.102762895@linuxfoundation.org> References: <20220124183943.102762895@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nathan Chancellor commit 502408a61f4b7eb4713f44bd77f4a48e6cb1b59a upstream. A new warning in clang points out a place in this file where a bitwise OR is being used with boolean expressions: In file included from drivers/staging/wlan-ng/prism2usb.c:2: drivers/staging/wlan-ng/hfa384x_usb.c:3787:7: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical] ((test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/staging/wlan-ng/hfa384x_usb.c:3787:7: note: cast one or both operands to int to silence this warning 1 warning generated. The comment explains that short circuiting here is undesirable, as the calls to test_and_{clear,set}_bit() need to happen for both sides of the expression. Clang's suggestion would work to silence the warning but the readability of the expression would suffer even more. To clean up the warning and make the block more readable, use a variable for each side of the bitwise expression. Link: https://github.com/ClangBuiltLinux/linux/issues/1478 Signed-off-by: Nathan Chancellor Link: https://lore.kernel.org/r/20211014215703.3705371-1-nathan@kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/staging/wlan-ng/hfa384x_usb.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) --- a/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/drivers/staging/wlan-ng/hfa384x_usb.c @@ -3903,18 +3903,18 @@ static void hfa384x_usb_throttlefn(struc spin_lock_irqsave(&hw->ctlxq.lock, flags); - /* - * We need to check BOTH the RX and the TX throttle controls, - * so we use the bitwise OR instead of the logical OR. - */ pr_debug("flags=0x%lx\n", hw->usb_flags); - if (!hw->wlandev->hwremoved && - ((test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && - !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags)) | - (test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) && - !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags)) - )) { - schedule_work(&hw->usb_work); + if (!hw->wlandev->hwremoved) { + bool rx_throttle = test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && + !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags); + bool tx_throttle = test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) && + !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags); + /* + * We need to check BOTH the RX and the TX throttle controls, + * so we use the bitwise OR instead of the logical OR. + */ + if (rx_throttle | tx_throttle) + schedule_work(&hw->usb_work); } spin_unlock_irqrestore(&hw->ctlxq.lock, flags);