From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julia Lawall Subject: Re: [PATCH 0/10] use safer test on the result of find_first_zero_bit Date: Wed, 4 Jun 2014 13:00:07 +0200 (CEST) Message-ID: References: <1401872880-23685-1-git-send-email-Julia.Lawall@lip6.fr> <063D6719AE5E284EB5DD2968C1650D6D1725705F@AcuExch.aculab.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: driverdevel , linux-s390 , Linux Fbdev development list , scsi , "iss_storagedev@hp.com" , Linux-sh list , linux-rdma , linux-wireless , "kernel-janitors@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "ath10k@lists.infradead.org" , "adi-buildroot-devel@lists.sourceforge.net" , Julia Lawall , David Laight , Arnd Bergmann , "netdev@vger.kernel.org" To: Geert Uytterhoeven Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: driverdev-devel-bounces@linuxdriverproject.org List-Id: netdev.vger.kernel.org On Wed, 4 Jun 2014, Geert Uytterhoeven wrote: > Hi Julia, > > On Wed, Jun 4, 2014 at 11:52 AM, Julia Lawall wrote: > >> Maybe the documented return code should be changed to allow for the > >> existing behaviour. > > > > Sorry, I'm not sure to understand what you suggest here. > > include/asm-generic/bitops/find.h: > > | /** > | * find_first_zero_bit - find the first cleared bit in a memory region > | * @addr: The address to start the search at > | * @size: The maximum number of bits to search > | * > | * Returns the bit number of the first cleared bit. > | * If no bits are zero, returns @size. > > "If no bits are zero, returns @size or a number larger than @size." OK, thanks. I was only looking at the C code. But the C code contains a loop that is followed by: if (!size) return result; tmp = *p; found_first: tmp |= ~0UL << size; if (tmp == ~0UL) /* Are any bits zero? */ return result + size; /* Nope. */ In the first return, it would seem that result == size. Could the second one be changed to just return size? It should not hurt performance. julia > > | */ > | extern unsigned long find_first_zero_bit(const unsigned long *addr, > | unsigned long size); > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds >