Skip to contentSkip to conversation

is_power_of_2-ufs/super.c

PATCH In review vignesh babu 4 participants 5 messages Jun 14, 2007 – Jun 25, 2007 Kernel janitors

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 is_power_of_2-ufs/super.c

Replacing (n & (n-1)) in the context of power of 2 checks with is_power_of_2

---

fs/ufs/super.c +3 -2
index 22ff6ed..2b30116 100644
@@ -87,6 +87,7 @@
 #include <linux/smp_lock.h>
 #include <linux/buffer_head.h>
 #include <linux/vfs.h>
+#include <linux/log2.h>
 
 #include "swab.h"
 #include "util.h"
@@ -854,7 +855,7 @@ magic_found:
 	uspi->s_fmask = fs32_to_cpu(sb, usb1->fs_fmask);
 	uspi->s_fshift = fs32_to_cpu(sb, usb1->fs_fshift);
 
-	if (uspi->s_fsize & (uspi->s_fsize - 1)) {
+	if (!is_power_of_2(uspi->s_fsize)) {
 		printk(KERN_ERR "ufs_read_super: fragment size %u is not a power of 2\n",
 			uspi->s_fsize);
 			goto failed;
@@ -869,7 +870,7 @@ magic_found:
 			uspi->s_fsize);
 		goto failed;
 	}
-	if (uspi->s_bsize & (uspi->s_bsize - 1)) {
+	if (!is_power_of_2(uspi->s_bsize)) {
 		printk(KERN_ERR "ufs_read_super: block size %u is not a power of 2\n",
 			uspi->s_bsize);
 		goto failed;
Signature · 3 lines
Vignesh Babu BM 
_____________________________________________________________ 
"Why is it that every time I'm with you, makes me believe in magic?"
Acked-by on v1 1/1
#1 lore raw
Quoted 6 lines · vignesh babu

Replacing (n & (n-1)) in the context of power of 2 checks with is_power_of_2

Quoted 44 lines

---

fs/ufs/super.c +3 -2
index 22ff6ed..2b30116 100644
@@ -87,6 +87,7 @@
 #include <linux/smp_lock.h>
 #include <linux/buffer_head.h>
 #include <linux/vfs.h>
+#include <linux/log2.h>
 
 #include "swab.h"
 #include "util.h"
@@ -854,7 +855,7 @@ magic_found:
 	uspi->s_fmask = fs32_to_cpu(sb, usb1->fs_fmask);
 	uspi->s_fshift = fs32_to_cpu(sb, usb1->fs_fshift);
 
-	if (uspi->s_fsize & (uspi->s_fsize - 1)) {
+	if (!is_power_of_2(uspi->s_fsize)) {
 		printk(KERN_ERR "ufs_read_super: fragment size %u is not a power of 2\n",
 			uspi->s_fsize);
 			goto failed;
@@ -869,7 +870,7 @@ magic_found:
 			uspi->s_fsize);
 		goto failed;
 	}
-	if (uspi->s_bsize & (uspi->s_bsize - 1)) {
+	if (!is_power_of_2(uspi->s_bsize)) {
 		printk(KERN_ERR "ufs_read_super: block size %u is not a power of 2\n",
 			uspi->s_bsize);
 		goto failed;
Signature · 12 lines
-- 
Vignesh Babu BM 
_____________________________________________________________ 
"Why is it that every time I'm with you, makes me believe in magic?"



The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. 

WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email.
 
www.wipro.com
Signature · 1 line
/Evgeniy
#2 lore raw
In reply to vignesh babu

Hi,

Quoted 2 lines · vignesh babu

Replacing (n & (n-1)) in the context of power of 2 checks with is_power_of_2

You might want to run

	egrep -R '([a-zA-Z0-9_.>]+) *& *\(\1 *- *1\)' /usr/src/linux

This does not match if the check is broken into multiple lines, though. Still, 66 matches so far. Perhaps a big patch that removes most of these occurrences would be more appropriate.

Hannes
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/kernel-janitors

#3 lore raw

Thanks Hannes, Im on it...

Quoted 1 line · Johannes Weiner

egrep -R '([a-zA-Z0-9_.>]+) *& *\(\1 *- *1\)' /usr/src/linux

Signature · 3 lines
Vignesh Babu BM 
_____________________________________________________________ 
"Why is it that every time I'm with you, makes me believe in magic?"
#4 lore raw
In reply to Johannes Weiner
Quoted 6 lines · Johannes Weiner

Hi,

Quoted 2 lines · vignesh babu

Replacing (n & (n-1)) in the context of power of 2 checks with is_power_of_2

Quoted 7 lines

You might want to run

	egrep -R '([a-zA-Z0-9_.>]+) *& *\(\1 *- *1\)' /usr/src/linux

This does not match if the check is broken into multiple lines, though. Still, 66 matches so far. Perhaps a big patch that removes most of these occurrences would be more appropriate.

this cleanup project is already well documented here:

http://fsdev.net/wiki/index.php?title=Power_of_2_stuff

and it's unlikely that you'd get a big patch in that tries to do all of that at once. it's much easier to do it a subsystem at a time.

rday

p.s. that wiki page could probably use some updating.

Signature · 11 lines
====================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
====================================
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/kernel-janitors