fs: remove obsolete comments on member ordering of random layout struct

Message ID TYCP286MB2323C8F54CB121755B83F5D9CADB9@TYCP286MB2323.JPNP286.PROD.OUTLOOK.COM
State New
Headers
Series fs: remove obsolete comments on member ordering of random layout struct |

Commit Message

Dawei Li Feb. 7, 2023, 1:14 p.m. UTC
  Structures marked with __randomize_layout are supposed to reorder layout
of members randomly. Although layout is not guranteed to be reordered
since dependency on hardening config, but let's not make assumption such
as "member foo is first".

Signed-off-by: Dawei Li <set_pte_at@outlook.com>
---
 include/linux/fs.h | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
  

Comments

Eric Biggers Feb. 7, 2023, 6:04 p.m. UTC | #1
On Tue, Feb 07, 2023 at 09:14:08PM +0800, Dawei Li wrote:
> Structures marked with __randomize_layout are supposed to reorder layout
> of members randomly. Although layout is not guranteed to be reordered
> since dependency on hardening config, but let's not make assumption such
> as "member foo is first".
> 
> Signed-off-by: Dawei Li <set_pte_at@outlook.com>
> ---
>  include/linux/fs.h | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index c1769a2c5d70..9114c4e44154 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -585,11 +585,6 @@ is_uncached_acl(struct posix_acl *acl)
>  
>  struct fsnotify_mark_connector;
>  
> -/*
> - * Keep mostly read-only and often accessed (especially for
> - * the RCU path lookup and 'stat' data) fields at the beginning
> - * of the 'struct inode'
> - */
>  struct inode {
>  	umode_t			i_mode;
>  	unsigned short		i_opflags;
> @@ -1471,7 +1466,7 @@ struct sb_writers {
>  };
>  
>  struct super_block {
> -	struct list_head	s_list;		/* Keep this first */
> +	struct list_head	s_list;

If these comments are just talking about how the fields are arranged for best
performance (the inode comment definitely is; the super_block one is a bit
ambiguous), rather than for correctness, they are perfectly fine to keep.  It
still makes sense to do those sort of manual structure layout optimizations on
commonly used structures like these, because they still benefit everyone who
doesn't have CONFIG_RANDSTRUCT enabled (i.e., almost everyone).

- Eric
  

Patch

diff --git a/include/linux/fs.h b/include/linux/fs.h
index c1769a2c5d70..9114c4e44154 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -585,11 +585,6 @@  is_uncached_acl(struct posix_acl *acl)
 
 struct fsnotify_mark_connector;
 
-/*
- * Keep mostly read-only and often accessed (especially for
- * the RCU path lookup and 'stat' data) fields at the beginning
- * of the 'struct inode'
- */
 struct inode {
 	umode_t			i_mode;
 	unsigned short		i_opflags;
@@ -1471,7 +1466,7 @@  struct sb_writers {
 };
 
 struct super_block {
-	struct list_head	s_list;		/* Keep this first */
+	struct list_head	s_list;
 	dev_t			s_dev;		/* search index; _not_ kdev_t */
 	unsigned char		s_blocksize_bits;
 	unsigned long		s_blocksize;