mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Linux 6.3 compat: Fix memcpy "detected field-spanning write" error
Add a new union member of flexible array to dnode_phys_t and use it in the macro so we can silence the memcpy() fortify error. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Youzhong Yang <yyang@mathworks.com> Closes #14737
This commit is contained in:
		
							parent
							
								
									f0aca5f7bb
								
							
						
					
					
						commit
						d7fb413f0f
					
				| @ -120,7 +120,11 @@ extern "C" { | ||||
| #define	DN_MAX_LEVELS	(DIV_ROUND_UP(DN_MAX_OFFSET_SHIFT - SPA_MINBLOCKSHIFT, \ | ||||
| 	DN_MIN_INDBLKSHIFT - SPA_BLKPTRSHIFT) + 1) | ||||
| 
 | ||||
| #define	DN_BONUS(dnp)	((void*)((dnp)->dn_bonus + \ | ||||
| /*
 | ||||
|  * Use the flexible array instead of the fixed length one dn_bonus | ||||
|  * to address memcpy/memmove fortify error | ||||
|  */ | ||||
| #define	DN_BONUS(dnp)	((void*)((dnp)->dn_bonus_flexible + \ | ||||
| 	(((dnp)->dn_nblkptr - 1) * sizeof (blkptr_t)))) | ||||
| #define	DN_MAX_BONUS_LEN(dnp) \ | ||||
| 	((dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) ? \ | ||||
| @ -266,6 +270,10 @@ typedef struct dnode_phys { | ||||
| 			    sizeof (blkptr_t)]; | ||||
| 			blkptr_t dn_spill; | ||||
| 		}; | ||||
| 		struct { | ||||
| 			blkptr_t __dn_ignore4; | ||||
| 			uint8_t dn_bonus_flexible[]; | ||||
| 		}; | ||||
| 	}; | ||||
| } dnode_phys_t; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 youzhongyang
						youzhongyang