We shouldn't use direct casts, because in the future it could break the code, so using BASE_CR would be safe against possible structure changes and rearrangements
Cc: Marvin Häuser <mhaeu...@posteo.de> Cc: Pedro Falcato <pedro.falc...@gmail.com> Cc: Vitaly Cheptsov <vit9...@protonmail.com> Signed-off-by: Savva Mitrofanov <savva...@gmail.com> Reviewed-by: Marvin Häuser <mhaeu...@posteo.de> --- Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h | 2 ++ Features/Ext4Pkg/Ext4Dxe/File.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h b/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h index 6d352d3995f1..adf3c13f6ea9 100644 --- a/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h +++ b/Features/Ext4Pkg/Ext4Dxe/Ext4Dxe.h @@ -386,6 +386,8 @@ struct _Ext4File { EXT4_DENTRY *Dentry; }; +#define EXT4_FILE_FROM_THIS(This) BASE_CR ((This), EXT4_FILE, Protocol) + #define EXT4_FILE_FROM_OPEN_FILES_NODE(Node) \ BASE_CR(Node, EXT4_FILE, OpenFilesListNode) diff --git a/Features/Ext4Pkg/Ext4Dxe/File.c b/Features/Ext4Pkg/Ext4Dxe/File.c index 86ccfff8603a..04198a53bfc0 100644 --- a/Features/Ext4Pkg/Ext4Dxe/File.c +++ b/Features/Ext4Pkg/Ext4Dxe/File.c @@ -372,7 +372,7 @@ Ext4Open ( EXT4_FILE *FoundFile; EXT4_FILE *Source; - Source = (EXT4_FILE *)This; + Source = EXT4_FILE_FROM_THIS (This); // // Reset SymLoops counter @@ -409,7 +409,7 @@ Ext4Close ( IN EFI_FILE_PROTOCOL *This ) { - return Ext4CloseInternal ((EXT4_FILE *)This); + return Ext4CloseInternal (EXT4_FILE_FROM_THIS (This)); } /** @@ -490,7 +490,7 @@ Ext4ReadFile ( EXT4_PARTITION *Partition; EFI_STATUS Status; - File = (EXT4_FILE *)This; + File = EXT4_FILE_FROM_THIS (This); Partition = File->Partition; ASSERT (Ext4FileIsOpenable (File)); @@ -541,7 +541,7 @@ Ext4WriteFile ( { EXT4_FILE *File; - File = (EXT4_FILE *)This; + File = EXT4_FILE_FROM_THIS (This); if (!(File->OpenMode & EFI_FILE_MODE_WRITE)) { return EFI_ACCESS_DENIED; @@ -571,7 +571,7 @@ Ext4GetPosition ( { EXT4_FILE *File; - File = (EXT4_FILE *)This; + File = EXT4_FILE_FROM_THIS (This); if (Ext4FileIsDir (File)) { return EFI_UNSUPPORTED; @@ -604,7 +604,7 @@ Ext4SetPosition ( { EXT4_FILE *File; - File = (EXT4_FILE *)This; + File = EXT4_FILE_FROM_THIS (This); // Only seeks to 0 (so it resets the ReadDir operation) are allowed if (Ext4FileIsDir (File) && (Position != 0)) { @@ -872,7 +872,7 @@ Ext4GetInfo ( EXT4_FILE *File; EXT4_PARTITION *Partition; - File = (EXT4_FILE *)This; + File = EXT4_FILE_FROM_THIS (This); Partition = File->Partition; if (CompareGuid (InformationType, &gEfiFileInfoGuid)) { @@ -989,7 +989,7 @@ Ext4SetInfo ( EXT4_FILE *File; EXT4_PARTITION *Partition; - File = (EXT4_FILE *)This; + File = EXT4_FILE_FROM_THIS (This); Partition = File->Partition; if (Partition->ReadOnly) { -- 2.37.3 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#93422): https://edk2.groups.io/g/devel/message/93422 Mute This Topic: https://groups.io/mt/93525494/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-