lkml.org 
[lkml]   [2011]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [opensuse-kernel] Re: [PATCH] include/log2.h: Fix rounddown_pow_of_two(1)
On Thu, 17 Nov 2011 20:19:06 -0300
Cristian Rodr__guez <crrodriguez@opensuse.org> 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.


\
 
 \ /
  Last update: 2011-11-18 00:35    [W:0.070 / U:1.172 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site