From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D30D1F8BD6 for ; Sun, 7 Dec 2025 17:50:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765129823; cv=none; b=mFGt97jfGpSF4ultrlpRG2e7uoMUbdtywmpkfFlNk4bENwTEKu+X52J0A3LH2nvjVJz2Qqgd6/W9oCn3LF6czuTpULTYYlfeV12aJ1X5xf7iNcSH4vWO+za9NiWW6J1e8GbIgfm33kJN2YvFlM0UWD+7hMopwa39daY4tknSI74= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765129823; c=relaxed/simple; bh=IBFPLCjhGGvMFJegtcX4oznfDUee+DbLiWgBzqYQMy4=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=h8mIyThc7vWgDeNAVhzHmK+xXRN7ypUEGZ0j+9FtWl6TyDw/Wk49flee7baRG/tCsmG6yoyCiBjFgxOZb3qlJu6oN+dBsusdIbzaIjttbjPlXoNFoMfRmaFKjWVzMcUc2CH1iVB7KwkQ21XE4lHJVyuJjv8d99GWNWEugiE0HOQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Slevxt0n; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Slevxt0n" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4777771ed1aso30472905e9.2 for ; Sun, 07 Dec 2025 09:50:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765129820; x=1765734620; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=sGhqMLrl7jq1mQkEGm9nNElvVPJo9GCqoqYpic3Bhy8=; b=Slevxt0nvEDFxARkRka65AeNrFYMpA+9ujv/TOc4gwXnaSW0UUP0Z6tJ4zDInM92oF 47PCjSIXw+SytrgS4u/VIOMEYXpj8PSf/1/eLWyMOPR4ihwvK6blPsT+Ys3zzc0zhiA8 BBTNVazbxttJkriucPgKp75a2h7P7ZmW0O9caNh4YHWnGQ614lsnolIsW+3giWSbszfz F9+i2UuzcIuiU6UJo138TJOdX10LDmPFK+R5fmPwwPAZ/jTiCkwUfjNzKBKDN5++Hmrj VLV2jr/Jj6jzmKewKVRXOMkcVTLvCDeTUbmpYvs9OXZjoxtFsetr9x1d8IEMPEODKepX B7pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765129820; x=1765734620; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=sGhqMLrl7jq1mQkEGm9nNElvVPJo9GCqoqYpic3Bhy8=; b=h52nJ3cJyCRCAkT5jd7X+H0torQ/wwt9Mg+WSlaBePxunZLtW7holKEHAQYj2BRu75 pSLIB83dOTYnsu8CkRZj6Dton7DZkAKQKmrXcItk22Rl9jx0Qrxr3PrdSjl+Rh2dG5sW lZmKUVWBg2UMIx8+/N4RUc+GAuQM4xD22Rzw7yL61ezQFxN4qIcV+0VbM/WVG2ZoXVJh t3U9vn7vZ4r8Zwgj7b75VqjBJ1MhGeg00o0T7V7COrgIOb1r7Et16LSApC8weixLDKtQ uYQP9JmMQKBvTlKZc9IGr9I3TYO+zun2OQDckt18MJdARX1CWw6T+7i/mgWJeYIrfQFm 3XQw== X-Forwarded-Encrypted: i=1; AJvYcCVTeeLKqyEoisvORvaG/G7I8OXEJdIllLzgRtpcwEouLZw+TMOB4KreYYtj5zCiJr5NnRE4xLJCybhC2R4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz3vwmsIpxqeWfHq7TEHhhtnGtg/tmW/yw2k52/uYDqz2aB7+B3 +aBkNkhCjuW2qz8j+HdAdKy6Zb9BUIy6KwemtS9vfvcwyId6oHGWnN8v X-Gm-Gg: ASbGncsDXt/UwIsAeA7n2BUhg85seQBLHbJjSamy9upk7H1gxPHTLQQP2CLTqr8Evgc TDhDPxjwPzCd3FRht3yA5TtyMCFcD7uI1pQuPSlXHhV1hYjhYiO6Oox9tLpVdHLV4eFnHBPzEnM MICKTIVY3P1qZZ3TqnM4gW3vH5gpqwLvtJqNXC0Y+zG1MJ+vBzvH6n4D7PIhAwJ/R9f23/JnRfS wO/b8m6ftjOvcTaAxXvyHooW+3pNZH2lIqtssYpshyq4alkcmGnXLhPXzKtCbcBxyGgpOXCyQzN 1R5rz63i43uYIU4YYisUpR5NXmSRm7A+XbqQOtir/bboyAlsNhE24B5XACU13awp6VvkXIp4TUT XOXh8qBK5XjVJpjlWTXU3fDDypjkfGJ3+8zQRt+CDAFyWJGXSpUG3jCEG4mvDTui0Z+PJSupriF 9vBofL2wzPuDkKafBL+97WXu8y6/7KwXc5vvTFLToQsT+xU6qWqTWp X-Google-Smtp-Source: AGHT+IHP+TcqzHfxZeLRdMcC4KJI6IxL6qiw45Rxo6f2yB8f0/P/pCOBJuLNp0SaEBBjvz1hp/Mlew== X-Received: by 2002:a05:600c:3b9d:b0:477:7b16:5fa6 with SMTP id 5b1f17b1804b1-47939dec75bmr61463915e9.3.1765129820061; Sun, 07 Dec 2025 09:50:20 -0800 (PST) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4792b02e7fbsm104976165e9.2.2025.12.07.09.50.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Dec 2025 09:50:19 -0800 (PST) Date: Sun, 7 Dec 2025 17:50:18 +0000 From: David Laight To: Dharanitharan R Cc: gregkh@linuxfoundation.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] staging: vme_user: simplify bus number allocation using ffz() Message-ID: <20251207175018.43b29806@pumpkin> In-Reply-To: <20251207164317.4835-1-dharanitharan725@gmail.com> References: <20251207164317.4835-1-dharanitharan725@gmail.com> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sun, 7 Dec 2025 16:43:17 +0000 Dharanitharan R wrote: > David Laight pointed out that the loop in vme_register_bridge() > is effectively searching for the first zero bit in vme_bus_numbers. > > Replace the manual loop with ffz() and use BIT(n) for consistency. > > Suggested-by: David Laight > Signed-off-by: Dharanitharan R > --- > drivers/staging/vme_user/vme.c | 15 +++++++++++++---------- > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/vme_user/vme.c b/drivers/staging/vme_user/vme.c > index 2095de72596a..45381e677475 100644 > --- a/drivers/staging/vme_user/vme.c > +++ b/drivers/staging/vme_user/vme.c > @@ -1765,16 +1765,19 @@ int vme_register_bridge(struct vme_bridge *bridge) > int ret = -1; > > mutex_lock(&vme_buses_lock); > - for (i = 0; i < sizeof(vme_bus_numbers) * 8; i++){ > - if ((vme_bus_numbers & (1 << i)) == 0) { > - vme_bus_numbers |= (1 << i); > - bridge->num = i; > - INIT_LIST_HEAD(&bridge->devices); > - list_add_tail(&bridge->bus_list, &vme_bus_list); > - ret = 0; > - break; > - } > + > + /* Find the first clear bit */ > + i = ffz(vme_bus_numbers); You need to check for ~0u first: * ffz - find first zero in word. * @word: The word to search * * Undefined if no zero exists, so code should check against ~0UL first. David > + > + /* Ensure we have a free slot */ > + if (i < BITS_PER_LONG) { > + vme_bus_numbers |= BIT(i); > + bridge->num = i; > + INIT_LIST_HEAD(&bridge->devices); > + list_add_tail(&bridge->bus_list, &vme_bus_list); > + ret = 0; > + } > mutex_unlock(&vme_buses_lock); > > return ret; > @@ -1787,7 +1790,7 @@ void vme_unregister_bridge(struct vme_bridge *bridge) > struct vme_dev *tmp; > > mutex_lock(&vme_buses_lock); > - vme_bus_numbers &= ~(1 << bridge->num); > + vme_bus_numbers &= ~BIT(bridge->num); > list_for_each_entry_safe(vdev, tmp, &bridge->devices, bridge_list) { > list_del(&vdev->drv_list); > list_del(&vdev->bridge_list);