From: Emese Revfy <re.emese@gmail.com>
To: Paul Mundt <lethal@linux-sh.org>
Cc: Matthew Wilcox <matthew@wil.cx>,
linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
viro@zeniv.linux.org.uk, akpm@linux-foundation.org,
arjan@infradead.org
Subject: Re: [PATCH 0/1] Constify struct address_space_operations for 2.6.32-git-053fe57ac v2
Date: Mon, 14 Dec 2009 23:20:58 +0100 [thread overview]
Message-ID: <4B26BA4A.7080602@gmail.com> (raw)
In-Reply-To: <20091214123636.GA7417@linux-sh.org>
Paul Mundt wrote:
> I don't see anything relating to sparse in that mail. You've effectively
> lumped sparse and constification together in the same camp, but it's
> unclear why this makes constification a better option other than that
> it's simply the option you opted for. All of your arguments "against"
> sparse in that context are equally applicable to constification, so I'll
> reiterate that you haven't sufficiently addressed the sparse angle.
>
> At present you seem to be the only one convinced that constification is
> the way to go, despite it being highly intrusive and ignoring the
> potential for more favourable and less intrusive options. You've also
> failed to adequately address the issues and suggestsions pointed out by
> others, and until this happens there is little point in posting any
> follow-up patches.
>
>>> Until such a consensus is reached one way or the other, please refrain
>>> from sending hundreds of patches -- one or two are sufficient for showing
>>> what you want to do until folks are on board with it, as is the typical
>>> nature of mechanical changes.
>> I think there is consensus to constify ops variables as much as
>> possible (e.g., Alexey's similar patches).
>>
>> The discussions in these threads were about constifying the ops structure
>> fields themselves and I already explained why they are useful, see the
>> above link and this one: http://lkml.org/lkml/2009/12/8/492
>
> And in here as well in the reply to that mail the same criticism exists
> as does the suggestion to look at doing it cleanly in sparse, which
> brings us back to what was already mentioned earlier.
Let me summarise the discussion so far:
As per Al Viro, Arjan and other developers the goal is to force
static allocations and prevent runtime modification of ops structures
(where it is possible, there are always exceptions like ata_port_operations).
The current strategy of constifying variables achieves the second goal only,
it still requires human review to catch violations of the first goal.
This is where consitfying the structure field becomes important: it prevents
direct modifications of runtime allocated ops structures therefore it
gives a strong signal to the programmer that he's trying to do something
undesired (this approach is in fact already used in the kernel, see: iwl_ops).
There is another benefit in that static but non-const ops structures cannot be
directly modified either, therefore it will be easier to make them const later.
Of course both constification efforts can be bypassed, a "clever" programmer can
write code in many ways that will write to otherwise "const" structures.
Nor is it possible to detect all such attempts by tools in fact, it would be
equivalent to solving the halting problem.
Therefore I think that it's a lot easier to have the compiler detect unwanted
direct modifications by constifying the structure fields than use sparse (which,
unlike a compiler, isn't used by everyone and would require more complex changes
than field constification for no real gain). In any case, constifying structure
fields is not exclusive of teaching sparse or other tools like checkpatch about
some bad code constructs, I will try my best on checkpatch.
To wrap it all up: human review will always be required to catch bad code and
we can help the process if we force would-be violators to go to lengths to
bypass the policy and make it easy for the reviewer to notice that something
is up.
> Thinking you have consensus because you don't see a difference and don't
> bother replying to the feedback you've gotten doesn't bode well for the
> future of your patch series or killfile avoidance strategy.
Please let me know whose feedback I didn't address.
--
Emese
next prev parent reply other threads:[~2009-12-14 22:19 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-13 23:58 [PATCH 00/22] Constify struct backlight_ops for 2.6.32-git-053fe57ac v2 re.emese
2009-12-13 23:58 ` [PATCH 01/22] " re.emese
2009-12-13 23:58 ` [PATCH 02/22] " re.emese
2009-12-13 23:58 ` [PATCH 03/22] " re.emese
2009-12-13 23:58 ` [PATCH 04/22] " re.emese
2009-12-13 23:58 ` [PATCH 05/22] " re.emese
2009-12-15 22:47 ` Richard Purdie
2009-12-16 22:39 ` Emese Revfy
2009-12-13 23:58 ` [PATCH 06/22] " re.emese
2009-12-13 23:58 ` [PATCH 1/3] Constify struct acpi_dock_ops " re.emese
2009-12-13 23:58 ` [PATCH 07/22] Constify struct backlight_ops " re.emese
2009-12-13 23:59 ` [PATCH 2/3] Constify struct acpi_dock_ops " re.emese
2009-12-13 23:59 ` [PATCH 08/22] Constify struct backlight_ops " re.emese
2009-12-13 23:59 ` [PATCH 09/22] " re.emese
2009-12-13 23:59 ` [PATCH 3/3] Constify struct acpi_dock_ops " re.emese
2009-12-13 23:59 ` [PATCH 10/22] Constify struct backlight_ops " re.emese
2009-12-14 0:27 ` Jonathan Woithe
2009-12-13 23:59 ` [PATCH 11/22] " re.emese
2009-12-13 23:59 ` [PATCH 12/22] " re.emese
2009-12-13 23:59 ` [PATCH 13/22] " re.emese
2009-12-13 23:59 ` [PATCH 14/22] " re.emese
2009-12-13 23:59 ` [PATCH 15/22] " re.emese
2009-12-13 23:59 ` [PATCH 16/22] " re.emese
2009-12-13 23:59 ` [PATCH 1/1] Constify struct address_space_operations " re.emese
2009-12-13 23:59 ` [PATCH 17/22] Constify struct backlight_ops " re.emese
2009-12-13 23:59 ` [PATCH 18/22] " re.emese
2009-12-13 23:59 ` [PATCH 19/22] " re.emese
2009-12-13 23:59 ` [PATCH 20/22] " re.emese
2009-12-13 23:59 ` [PATCH 21/22] " re.emese
2009-12-13 23:59 ` [PATCH 22/22] " re.emese
2009-12-14 0:38 ` [PATCH 0/1] Constify struct address_space_operations " Matthew Wilcox
2009-12-14 1:33 ` Emese Revfy
2009-12-14 2:19 ` Paul Mundt
2009-12-14 7:08 ` Emese Revfy
2009-12-14 11:26 ` Pavel Machek
2009-12-14 16:00 ` Arjan van de Ven
2009-12-14 16:30 ` Matthew Wilcox
2009-12-14 21:25 ` Pavel Machek
2009-12-14 22:17 ` Arjan van de Ven
2009-12-14 22:21 ` Pavel Machek
2009-12-14 22:41 ` Emese Revfy
2009-12-15 18:14 ` Pavel Machek
2009-12-15 23:28 ` Emese Revfy
2009-12-16 0:04 ` Al Viro
2009-12-16 8:06 ` Pavel Machek
2009-12-16 22:24 ` Emese Revfy
2009-12-14 23:13 ` Emese Revfy
2009-12-15 10:47 ` Pavel Machek
2009-12-15 19:12 ` Al Viro
2009-12-14 12:36 ` Paul Mundt
2009-12-14 22:20 ` Emese Revfy [this message]
2009-12-15 0:01 ` Arjan van de Ven
2009-12-15 23:53 ` Emese Revfy
2009-12-14 11:18 ` Pavel Machek
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=4B26BA4A.7080602@gmail.com \
--to=re.emese@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=arjan@infradead.org \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox