All of lore.kernel.org
 help / color / mirror / Atom feed
From: Segher Boessenkool <segher@kernel.crashing.org>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: linuxppc-dev@ozlabs.org, paulus@samba.org,
	David Miller <davem@davemloft.net>,
	sfr@canb.auug.org.au
Subject: Re: [PATCH 6/6] [POWERPC] make struct property's value a void *
Date: Fri, 6 Apr 2007 01:26:26 +0200	[thread overview]
Message-ID: <1e26dd33aaeae9c55962be681b85e75e@kernel.crashing.org> (raw)
In-Reply-To: <1175814107.30879.143.camel@localhost.localdomain>

>> It would remove the millions of casts (and the need for the GCC
>> -fstrict-aliasing flag for this code).
>
> Ugh ? We don't need casts with void *, that's the whole point ... while
> we would do if we used char * ...
>
> I'm not familiar with the details of the strict-breaking-good-programs
> rules also known as strict-aliasing but isn't void * supposed to alias
> all ?

Pointers never alias anything.  It's the data accesses
that matter.  You cannot access one type as another type
and expect it to work (unless one of those types is a
character type); that's the one simple rule.

Since you cannot access something with type "void"; no,
void pointers don't "alias" anything.

Perhaps you mean that you can cast any pointer to data to
"void *" and back to the same type.

> if not, that's really stupid... But even then, I fail to see how
> this would break an aliasing rule as we aren't accessing the same 
> object
> from two different types and we aren't even writing to it.

It doesn't matter whether you write to anything; you cannot
read the same data as two different types, either.

I'll have to trust you that the current code never does
that; it's really hard to see, with all the pointer casting
going around.

>> I agree.  However when making this code more generally useful,
>> it would be good to make it more correct at the same time, since
>> it will only get harder to do so later on.
>
> I think it's perfectly correct with void * ...

There's nothing wrong with a void * /per se/.  It's that
you need to cast it again later to access your data; and
I say you cast it to all kinds of wrong types, only u8 *
would be valid.  Feel free to ignore me though, at least
the PowerPC early boot makes sure all properties are
aligned to some power of two; as long as you never happen
to find a property where an int starts somewhere else
than a multiple of four into that property you should be
fine.  And SPARC can keep on depending on the OF it runs
on aligning everything by pure luck as far as I am concerned.

Other architectures won't be so lucky, so we'll just revisit
this when support for those is added.


Segher

  parent reply	other threads:[~2007-04-05 23:27 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-03  0:52 [PATCH 1/6] [POWERPC] get_property returns const Stephen Rothwell
2007-04-03  0:54 ` [PATCH 2/6] [POWERPC] Rename get_property to of_get_property Stephen Rothwell
2007-04-03  0:55   ` [PATCH 3/6] [POWERPC] Rename device_is_compatible to of_device_is_compatible Stephen Rothwell
2007-04-03  0:56     ` [PATCH 4/6] [POWERPC] Rename prom_n_addr_cells to of_n_addr_cells Stephen Rothwell
2007-04-03  0:57       ` [PATCH 5/6] [POWERPC] Rename prom_n_size_cells to of_n_size_cells Stephen Rothwell
2007-04-03  0:58         ` [PATCH 6/6] [POWERPC] make struct property's value a void * Stephen Rothwell
2007-04-03  3:37           ` David Miller
2007-04-03 15:40             ` Segher Boessenkool
2007-04-03 12:24           ` [PATCH 01/17] [POWERPC] Rename get_property to of_get_property: include Stephen Rothwell
2007-04-03 12:26             ` [PATCH 02/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/kernel Stephen Rothwell
2007-04-03 12:28               ` [PATCH 03/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/mm Stephen Rothwell
2007-04-03 12:30                 ` [PATCH 04/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/sysdev Stephen Rothwell
2007-04-03 12:31                   ` [PATCH 05/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/platforms/pseries Stephen Rothwell
2007-04-03 12:32                     ` [PATCH 06/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/platforms/powermac Stephen Rothwell
2007-04-03 12:35                       ` [PATCH 07/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/platforms/cell Stephen Rothwell
2007-04-03 12:37                         ` [PATCH 08/17] [POWERPC] Rename get_property to of_get_property: arch/powerpc/platforms Stephen Rothwell
2007-04-03 12:39                           ` [PATCH 09/17] [POWERPC] Rename get_property to of_get_property: sound Stephen Rothwell
2007-04-03 12:40                             ` [PATCH 10/17] [POWERPC] Rename get_property to of_get_property: drivers/macintosh Stephen Rothwell
2007-04-03 12:42                               ` [PATCH 11/17] [POWERPC] Rename get_property to of_get_property: drivers/char Stephen Rothwell
2007-04-03 12:43                                 ` [PATCH 12/17] [POWERPC] Rename get_property to of_get_property: drivers/net Stephen Rothwell
2007-04-03 12:45                                   ` [PATCH 13/17] [POWERPC] Rename get_property to of_get_property: drivers/video Stephen Rothwell
2007-04-03 12:46                                     ` [PATCH 14/17] [POWERPC] Rename get_property to of_get_property: drivers/scsi Stephen Rothwell
2007-04-03 12:49                                       ` [PATCH 15/17] [POWERPC] Rename get_property to of_get_property: drivers Stephen Rothwell
2007-04-03 12:50                                         ` [PATCH 16/17] [POWERPC] Rename get_property to of_get_property: the last one Stephen Rothwell
2007-04-03 12:52                                           ` [PATCH 17/17] [POWERPC] Remove get_property Stephen Rothwell
2007-04-03 13:05                                             ` [PATCH] [SPARC/64] " Stephen Rothwell
2007-04-03 13:24                                               ` [PATCH] [SPARC/64] Make device_node name and type const Stephen Rothwell
2007-04-12  4:19                                                 ` [PATCH,RFC] Split out common parts of prom.h Stephen Rothwell
2007-04-12  4:25                                                   ` David Miller
2007-04-12 16:13                                                     ` Kumar Gala
2007-04-12 19:19                                                       ` Segher Boessenkool
2007-04-12  5:34                                                   ` [PATCH] Start split out of common open firmware code Stephen Rothwell
     [not found]                                                     ` <20070424223245.78f4fdfb.sfr@canb.auug .org.au>
2007-04-12  5:41                                                     ` David Miller
2007-04-12  5:50                                                     ` Benjamin Herrenschmidt
2007-04-12  6:25                                                       ` David Miller
2007-04-12  6:36                                                         ` Benjamin Herrenschmidt
2007-04-12  6:40                                                           ` David Miller
2007-04-12  7:00                                                         ` Segher Boessenkool
2007-04-23  7:43                                                           ` Stephen Rothwell
2007-04-23 18:30                                                             ` Segher Boessenkool
2007-04-24 12:32                                                     ` [PATCH 1/6] " Stephen Rothwell
2007-04-24 12:38                                                       ` [PATCH 2/6] Consolidate of_device_is_compatible Stephen Rothwell
2007-04-24 13:36                                                         ` Segher Boessenkool
2007-04-24 23:59                                                         ` Benjamin Herrenschmidt
2007-04-25  4:23                                                           ` David Miller
2007-04-24 12:39                                                       ` [PATCH 3/6] Consolidate of_find_property Stephen Rothwell
2007-04-24 13:41                                                         ` Segher Boessenkool
2007-04-25  1:43                                                           ` Paul Mackerras
2007-04-25  2:10                                                             ` Segher Boessenkool
2007-04-25  4:31                                                             ` David Miller
2007-04-25  5:07                                                             ` Benjamin Herrenschmidt
2007-04-25 13:13                                                               ` Segher Boessenkool
2007-04-25 17:46                                                                 ` Matt Sealey
2007-04-25 19:02                                                                   ` Segher Boessenkool
2007-04-25 22:16                                                                   ` Benjamin Herrenschmidt
2007-04-25 22:24                                                                     ` David Miller
2007-04-25 22:47                                                                       ` Benjamin Herrenschmidt
2007-04-25 23:13                                                                         ` David Miller
2007-04-25 23:18                                                                           ` Segher Boessenkool
2007-04-25 23:28                                                                             ` David Miller
2007-04-25 23:21                                                                           ` Benjamin Herrenschmidt
2007-04-26  5:54                                                                           ` Stephen Rothwell
2007-04-26  5:58                                                                             ` David Miller
2007-04-25  0:00                                                         ` Benjamin Herrenschmidt
2007-04-25  0:43                                                           ` Segher Boessenkool
2007-04-25  1:12                                                             ` Benjamin Herrenschmidt
2007-04-25  2:03                                                               ` Segher Boessenkool
2007-04-25  4:24                                                           ` David Miller
2007-04-24 12:40                                                       ` [PATCH 4/6] Consolidate of_get_parent Stephen Rothwell
2007-04-24 14:42                                                         ` Loeliger Jon-LOELIGER
2007-04-26  1:34                                                           ` Stephen Rothwell
2007-04-24 12:42                                                       ` [PATCH 5/6] Consolidate of_get_next_child Stephen Rothwell
2007-04-24 12:43                                                       ` [PATCH 6/6] Consolidate of_find_node_by routines Stephen Rothwell
2007-04-25  0:01                                                         ` Benjamin Herrenschmidt
2007-04-24 13:27                                                       ` [PATCH 1/6] Start split out of common open firmware code Segher Boessenkool
2007-04-24 14:47                                                         ` Loeliger Jon-LOELIGER
2007-04-24 18:04                                                           ` David Miller
2007-04-24 18:18                                                             ` Segher Boessenkool
2007-04-24 19:14                                                               ` Jon Loeliger
2007-04-25  0:07                                                             ` Benjamin Herrenschmidt
2007-04-25  1:03                                                               ` Segher Boessenkool
2007-04-25  4:29                                                                 ` David Miller
2007-04-25 13:11                                                                   ` Segher Boessenkool
2007-04-25  0:03                                                         ` Benjamin Herrenschmidt
2007-04-25  0:50                                                           ` Segher Boessenkool
2007-04-25  1:51                                                             ` Josh Boyer
2007-04-25  2:07                                                               ` Segher Boessenkool
2007-04-25  4:27                                                             ` David Miller
2007-04-25 13:07                                                               ` Segher Boessenkool
2007-04-24 23:35                                                       ` David Miller
2007-04-12  6:58                                                   ` [PATCH,RFC] Split out common parts of prom.h Segher Boessenkool
2007-04-12 21:41                                                 ` [PATCH] [SPARC/64] Make device_node name and type const David Miller
2007-04-12 21:42                                               ` [PATCH] [SPARC/64] Remove get_property David Miller
2007-04-27  3:41                                 ` [PATCH] [POWERPC] Rename get_property to of_get_property: partial drivers Stephen Rothwell
2007-04-03 17:36             ` [PATCH 01/17] [POWERPC] Rename get_property to of_get_property: include Olof Johansson
2007-04-05  1:49             ` Benjamin Herrenschmidt
2007-04-03 15:39           ` [PATCH 6/6] [POWERPC] make struct property's value a void * Segher Boessenkool
2007-04-03 18:28             ` David Miller
2007-04-04 11:11               ` Segher Boessenkool
2007-04-04 19:21                 ` David Miller
2007-04-05  1:48                   ` Benjamin Herrenschmidt
2007-04-05 18:12                   ` Segher Boessenkool
2007-04-05 23:01                     ` Benjamin Herrenschmidt
2007-04-05 23:12                       ` David Miller
2007-04-05 23:26                       ` Segher Boessenkool [this message]
2007-04-09 18:20                         ` Paul Mackerras
2007-04-09 22:11                           ` Segher Boessenkool
2007-04-09 23:17                           ` David Miller
2007-04-27  4:32 ` [PATCH] Partialially revert a7edd0e676d51145ae634a2acf7a447e319200fa Stephen Rothwell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1e26dd33aaeae9c55962be681b85e75e@kernel.crashing.org \
    --to=segher@kernel.crashing.org \
    --cc=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=paulus@samba.org \
    --cc=sfr@canb.auug.org.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.