drop oboslete ocfs2 patch
now upstreamed in a slightly different way Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
		
							parent
							
								
									92e753f360
								
							
						
					
					
						commit
						fda70d3865
					
				| @ -1,68 +0,0 @@ | ||||
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||||
| From: Valentin Vidic <vvidic@valentin-vidic.from.hr> | ||||
| Date: Mon, 27 Sep 2021 17:44:59 +0200 | ||||
| Subject: [PATCH] ocfs2: mount fails with buffer overflow in strlen | ||||
| 
 | ||||
| Starting with kernel v5.11 mouting an ocfs2 filesystem with either o2cb | ||||
| or pcmk cluster stack fails with the trace below. Problem seems to be | ||||
| that strings for cluster stack and cluster name are not guaranteed to be | ||||
| null terminated in the disk representation, while strlcpy assumes that | ||||
| the source string is always null terminated. This causes a read outside | ||||
| of the source string triggering the buffer overflow detection. | ||||
| 
 | ||||
| detected buffer overflow in strlen | ||||
| ------------[ cut here ]------------
 | ||||
| kernel BUG at lib/string.c:1149! | ||||
| invalid opcode: 0000 [#1] SMP PTI | ||||
| CPU: 1 PID: 910 Comm: mount.ocfs2 Not tainted 5.14.0-1-amd64 #1 | ||||
|   Debian 5.14.6-2 | ||||
| RIP: 0010:fortify_panic+0xf/0x11 | ||||
| ... | ||||
| Call Trace: | ||||
|  ocfs2_initialize_super.isra.0.cold+0xc/0x18 [ocfs2] | ||||
|  ocfs2_fill_super+0x359/0x19b0 [ocfs2] | ||||
|  mount_bdev+0x185/0x1b0 | ||||
|  ? ocfs2_remount+0x440/0x440 [ocfs2] | ||||
|  legacy_get_tree+0x27/0x40 | ||||
|  vfs_get_tree+0x25/0xb0 | ||||
|  path_mount+0x454/0xa20 | ||||
|  __x64_sys_mount+0x103/0x140 | ||||
|  do_syscall_64+0x3b/0xc0 | ||||
|  entry_SYSCALL_64_after_hwframe+0x44/0xae | ||||
| 
 | ||||
| Signed-off-by: Valentin Vidic <vvidic@valentin-vidic.from.hr> | ||||
| Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> | ||||
| ---
 | ||||
|  fs/ocfs2/super.c | 10 ++++++---- | ||||
|  1 file changed, 6 insertions(+), 4 deletions(-) | ||||
| 
 | ||||
| diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
 | ||||
| index c86bd4e60e20..1dea535224df 100644
 | ||||
| --- a/fs/ocfs2/super.c
 | ||||
| +++ b/fs/ocfs2/super.c
 | ||||
| @@ -2169,9 +2169,10 @@ static int ocfs2_initialize_super(struct super_block *sb,
 | ||||
|  	if (ocfs2_clusterinfo_valid(osb)) { | ||||
|  		osb->osb_stackflags = | ||||
|  			OCFS2_RAW_SB(di)->s_cluster_info.ci_stackflags; | ||||
| -		strlcpy(osb->osb_cluster_stack,
 | ||||
| +		memcpy(osb->osb_cluster_stack,
 | ||||
|  		       OCFS2_RAW_SB(di)->s_cluster_info.ci_stack, | ||||
| -		       OCFS2_STACK_LABEL_LEN + 1);
 | ||||
| +		       OCFS2_STACK_LABEL_LEN);
 | ||||
| +		osb->osb_cluster_stack[OCFS2_STACK_LABEL_LEN] = '\0';
 | ||||
|  		if (strlen(osb->osb_cluster_stack) != OCFS2_STACK_LABEL_LEN) { | ||||
|  			mlog(ML_ERROR, | ||||
|  			     "couldn't mount because of an invalid " | ||||
| @@ -2180,9 +2181,10 @@ static int ocfs2_initialize_super(struct super_block *sb,
 | ||||
|  			status = -EINVAL; | ||||
|  			goto bail; | ||||
|  		} | ||||
| -		strlcpy(osb->osb_cluster_name,
 | ||||
| +		memcpy(osb->osb_cluster_name,
 | ||||
|  			OCFS2_RAW_SB(di)->s_cluster_info.ci_cluster, | ||||
| -			OCFS2_CLUSTER_NAME_LEN + 1);
 | ||||
| +			OCFS2_CLUSTER_NAME_LEN);
 | ||||
| +		osb->osb_cluster_name[OCFS2_CLUSTER_NAME_LEN] = '\0';
 | ||||
|  	} else { | ||||
|  		/* The empty string is identical with classic tools that | ||||
|  		 * don't know about s_cluster_info. */ | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Thomas Lamprecht
						Thomas Lamprecht