[PATCH] rtc: armada38x: add __ro_after_init to armada38x_rtc_ops
From: Julia Lawall <hidden>
Date: 2017-01-04 13:41:43
Also in:
linux-rtc, lkml
On Wed, 4 Jan 2017, Russell King - ARM Linux wrote:
On Wed, Jan 04, 2017 at 01:23:41PM +0100, Julia Lawall wrote:quoted
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.
OK, thanks for the explanations. julia