2000-10-30 02:05:47

by Kevin Lawton

[permalink] [raw]
Subject: bug fix for 'include/linux/wrapper.h', bad parentheses for macros

Listed in 2.4 headers as:

#define mem_map_reserve(p) set_bit(PG_reserved, &p->flags)
#define mem_map_unreserve(p) clear_bit(PG_reserved, &p->flags)

...but should be:

#define mem_map_reserve(p) set_bit(PG_reserved, &((p)->flags))
#define mem_map_unreserve(p) clear_bit(PG_reserved, &((p)->flags))

Because of the 'void *' nature of the 2nd parameter to set_bit/clear_bit,
the compiler is not picking up this error. Either expression generates
a pointer, but not the same values.

Might as well also wrap the parameter 'p' with parentheses in the
subsequent macros, mem_map_inc_count() and mem_map_dec_count(),
for clarity.

CC me if needed. I'm not on this list.

-Kevin Lawton
Plex86 project


2000-10-30 03:10:45

by Jeff Garzik

[permalink] [raw]
Subject: PATCH 2.4.0.10.6: wrapper.h cleanup

Index: include/linux/wrapper.h
===================================================================
RCS file: /cvsroot/gkernel/linux_2_4/include/linux/wrapper.h,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 wrapper.h
--- include/linux/wrapper.h 2000/10/22 21:00:45 1.1.1.3
+++ include/linux/wrapper.h 2000/10/30 03:07:00
@@ -1,36 +1,14 @@
#ifndef _WRAPPER_H_
#define _WRAPPER_H_
-#define wait_handle struct wait_queue
-#define file_handle struct file
-#define inode_handle struct inode
-#define select_table_handle select_table
-#define vm_area_handle struct vm_area_struct

-#define connect_wrapper(x) 0
-#define current_got_fatal_signal() (signal_pending(current))
-#define current_set_timeout(val) current->timeout = val
+#define vma_set_inode(v,i) ((v)->vm_inode = (i))
+#define vma_get_flags(v) ((v)->vm_flags)
+#define vma_get_pgoff(v) ((v)->vm_pgoff)
+#define vma_get_start(v) ((v)->vm_start)
+#define vma_get_end(v) ((v)->vm_end)
+#define vma_get_page_prot(v) ((v)->vm_page_prot)

-#define module_interruptible_sleep_on interruptible_sleep_on
-#define module_wake_up wake_up
-#define module_select_wait select_wait
-#define module_register_chrdev register_chrdev
-#define module_unregister_chrdev unregister_chrdev
-#define module_register_blkdev register_blkdev
-#define module_unregister_blkdev unregister_blkdev
+#define mem_map_reserve(p) set_bit(PG_reserved, &((p)->flags))
+#define mem_map_unreserve(p) clear_bit(PG_reserved, &((p)->flags))

-#define inode_get_rdev(i) i->i_rdev
-
-#define file_get_flags(f) f->f_flags
-
-#define vma_set_inode(v,i) v->vm_inode = i
-#define vma_get_flags(v) v->vm_flags
-#define vma_get_pgoff(v) v->vm_pgoff
-#define vma_get_start(v) v->vm_start
-#define vma_get_end(v) v->vm_end
-#define vma_get_page_prot(v) v->vm_page_prot
-
-#define mem_map_reserve(p) set_bit(PG_reserved, &p->flags)
-#define mem_map_unreserve(p) clear_bit(PG_reserved, &p->flags)
-#define mem_map_inc_count(p) atomic_inc(&(p->count))
-#define mem_map_dec_count(p) atomic_dec(&(p->count))
-#endif
+#endif /* _WRAPPER_H_ */


Attachments:
wrapper-2.4.0.10.6.patch (2.00 kB)