Messages in this thread | | | Date | Wed, 4 Jan 2017 13:06:28 +0000 | From | Russell King - ARM Linux <> | Subject | Re: [PATCH] rtc: armada38x: add __ro_after_init to armada38x_rtc_ops |
| |
On Wed, Jan 04, 2017 at 01:23:41PM +0100, Julia Lawall wrote: > Basically, the strategy of the patch is that one may consider it > preferable to duplicate the structure for the different alternatives, > rather than use __ro_after_init. Perhaps if the structure were larger, > then __ro_after_init would be a better choice?
It depends on not just the size, but how many members need to be modified, and obviously whether there are likely to be more than one user of the structure as well.
So I'd say __ro_after_init rarely makes sense for an operations structure - the only case I can see is:
- a large structure - only a small number of elements need to be modified - it is only single-use
which is probably quite rare - this one falls into two out of those three.
There's another consideration (imho) too - we may wish, at a later date, to make .text and .rodata both read-only from the start of the kernel to harden the kernel against possibly init-time exploitation. (Think about a buggy built-in driver with emulated hardware - much the same problem that Kees is trying to address in one of his recent patch sets but with hotplugged hardware while a screen-saver is active.) Having function pointers in .rodata rather than the ro-after-init section would provide better protection.
-- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net.
| |