Re: [opensuse-kernel] Re: [PATCH] include/log2.h: Fixrounddown_pow_of_two(1)

From: Andrew Morton
Date: Thu Nov 17 2011 - 18:32:52 EST


On Thu, 17 Nov 2011 20:19:06 -0300
Cristian Rodr__guez <crrodriguez@xxxxxxxxxxxx> wrote:

> On 17/11/11 20:05, Andrew Morton wrote:
>
> > I assume that nobody has gone off and checked whether all current
> > callers will survive this change. If they had, they'd have looked in
> > drivers/char/ramoops.c and seen:
> >
> > rounddown_pow_of_two(pdata->mem_size);
> > rounddown_pow_of_two(pdata->record_size);
> >
> > These operations are no-ops. It should be
> >
> > pdata->mem_size = rounddown_pow_of_two(pdata->mem_size);
> > pdata->record_size = rounddown_pow_of_two(pdata->record_size);
> >
> > That we have this many warts using these interfaces is an indication
> > that the interfaces aren't very good. Poorly documented, at least.
> >
>
> making that macro an inline function and annotating with
> __attribute__((warn_unused_result)) looks like a good start for me.

The problem is:

* - this can be used to initialise global variables from constant data

I'm surprised that this is true. Is gcc smart enough to actually do
this?

<tests it>

--- a/fs/open.c~a
+++ a/fs/open.c
@@ -31,6 +31,10 @@
#include <linux/ima.h>
#include <linux/dnotify.h>

+#include <linux/log2.h>
+
+int blap = rounddown_pow_of_two(42);
+
#include "internal.h"

int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
_

ooh, it worked.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/