Hello all,
I sent this to linux-mm, but haven't gotten a response - hope it's OK to
send here. I believe the set_page_count() macro is broken, and should
have parentheses around the 'v' in the second argument (otherwise more
complex arguments will break). Here is a patch to 2.6.15 - I haven't
really tested it, but it looks simple enough. Any objections? Anything
else I need to do?
Thanks,
Avishay Traeger
http://www.fsl.cs.sunysb.edu/~avishay/
diff -Naur linux-2.6.15/include/linux/mm.h
linux-2.6.15-mod/include/linux/mm.h
--- linux-2.6.15/include/linux/mm.h 2006-01-02 22:21:10.000000000
-0500
+++ linux-2.6.15-mod/include/linux/mm.h 2006-01-03 11:28:19.000000000
-0500
@@ -308,7 +308,7 @@
*/
#define get_page_testone(p) atomic_inc_and_test(&(p)->_count)
-#define set_page_count(p,v) atomic_set(&(p)->_count, v - 1)
+#define set_page_count(p,v) atomic_set(&(p)->_count, (v) - 1)
#define __put_page(p) atomic_dec(&(p)->_count)
extern void FASTCALL(__page_cache_release(struct page *));
Avishay Traeger napsal(a):
> Hello all,
>
> I sent this to linux-mm, but haven't gotten a response - hope it's OK to
> send here. I believe the set_page_count() macro is broken, and should
> have parentheses around the 'v' in the second argument (otherwise more
> complex arguments will break). Here is a patch to 2.6.15 - I haven't
> really tested it, but it looks simple enough. Any objections? Anything
> else I need to do?
You should cc somebody (maybe Andrew Morton) and add signed-off-by line if you
want it to be merged. For both, see SubmittingPatches in Documentation.
Also read the whole document, not only those 2 parts...
>
> Thanks,
> Avishay Traeger
> http://www.fsl.cs.sunysb.edu/~avishay/
>
>
> diff -Naur linux-2.6.15/include/linux/mm.h
> linux-2.6.15-mod/include/linux/mm.h
> --- linux-2.6.15/include/linux/mm.h 2006-01-02 22:21:10.000000000
> -0500
> +++ linux-2.6.15-mod/include/linux/mm.h 2006-01-03 11:28:19.000000000
> -0500
> @@ -308,7 +308,7 @@
> */
> #define get_page_testone(p) atomic_inc_and_test(&(p)->_count)
>
> -#define set_page_count(p,v) atomic_set(&(p)->_count, v - 1)
> +#define set_page_count(p,v) atomic_set(&(p)->_count, (v) - 1)
> #define __put_page(p) atomic_dec(&(p)->_count)
>
> extern void FASTCALL(__page_cache_release(struct page *));
>
regards,
--
Jiri Slaby http://www.fi.muni.cz/~xslaby
~\-/~ [email protected] ~\-/~
B67499670407CE62ACC8 22A032CC55C339D47A7E