On 8 September 2017 at 19:47, Laszlo Ersek <[email protected]> wrote:
> On 09/08/17 14:41, Paulo Alcantara wrote:
>> Hi,
>>
>> This series introduces read-only UDF file system support in EDK2. As
>> Laszlo (or Red Hat) seemed to be interested in such support, I'm posting
>> it again after ~3 years.
>>
>> The idea is not replacing the default FAT file system, nor breaking any
>> existing file system support, but extending EDK2 with a new file system
>> that might be useful for some people who are looking for specific file
>> system features that current FAT doesn't support.
>>
>> Originally the driver was written to support UDF file systems as
>> specified by OSTA Universal Disk Format Specification 2.60. However,
>> some Windows 10 Enterprise ISO (UDF bridge) images that I tested
>> supported a revision of 1.02 thus I had to rework the driver a little
>> bit to support such revision as well.
>>
>> v2:
>>  - Rework to _partially_ support UDF revisions <2.60.
>>  - Use existing CDROM_VOLUME_DESCRIPTOR structure defined in Eltorito.h
>>    instead of creating another one (UDF_VOLUME_DESCRIPTOR).
>>  - Fixed UdfDxe to correctly follow UEFI driver model.
>>  - Use HARDDRIVE_DEVICE_PATH instead of a vendor-defined one.
>>  - Detect UDF file systems only in PartitionDxe, and let UdfDxe driver
>>    check for specific UDF device path to decide whether or not install
>>    SimpleFs protocol.
>>  - Place MdePkg changes in a separate patch.
>> v3:
>>  - Install UDF partition child handles with a Vendor-Defined Media
>>    Device Path.
>>  - Changed UdfDxe to check for Vendor-Defined Media Device Paths with a
>>    specific UDF file system GUID when determining to whether or not
>>    start the driver.
>>  - Removed leading TAB chars in some source files identified by
>>    PatchCheck.py tool.
>> v4:
>>  - Added missing R-b's.
>> v5:
>>  - Fixed OVMF IA32 build.
>>  - Fixed a typo in UdfDriveBindingStop() ("This" -> "SimpleFs") which
>>    broke retrieval of private fs data from SimpleFs protocol --
>>    identified by 'reconnect -r' command in UEFI shell.
>> v6:
>>  - Fixed a bug in UdfRead() that'd pontentially break in ARM or IA32
>>    by allowing caller to read more than 4GiB of data
>>    (i.e. BufferSize pointer is dereferenced as an UINT64 * and it's
>>     followed by 4 bytes that are nonzero).
>>
>> Repo:   https://github.com/pcacjr/edk2.git
>> Branch: udf-fs-v6
>>
>> Cc: Laszlo Ersek <[email protected]>
>> Cc: Jordan Justen <[email protected]>
>> Cc: Andrew Fish <[email protected]>
>> Cc: Michael D Kinney <[email protected]>
>> Cc: Liming Gao <[email protected]>
>> Cc: Star Zeng <[email protected]>
>> Cc: Eric Dong <[email protected]>
>> Cc: Mark Doran <[email protected]>
>> Cc: Ruiyu Ni <[email protected]>
>> Cc: [email protected]
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Paulo Alcantara <[email protected]>
>> ---
>>
>> Paulo Alcantara (6):
>>   MdePkg: Add UDF volume structure definitions
>>   MdeModulePkg/PartitionDxe: Add UDF file system support
>>   MdeModulePkg: Initial UDF/ECMA-167 file system support
>>   OvmfPkg: Enable UDF file system support
>>   ArmVirtPkg: Enable UDF file system support
>>   Nt32Pkg: Enable UDF file system support
>>
>>  ArmVirtPkg/ArmVirtQemu.dsc                         |    3 +-
>>  ArmVirtPkg/ArmVirtQemuFvMain.fdf.inc               |    3 +-
>>  ArmVirtPkg/ArmVirtQemuKernel.dsc                   |    3 +-
>>  ArmVirtPkg/ArmVirtXen.dsc                          |    3 +-
>>  ArmVirtPkg/ArmVirtXen.fdf                          |    1 +
>>  .../Universal/Disk/PartitionDxe/Partition.c        |    9 +-
>>  .../Universal/Disk/PartitionDxe/Partition.h        |   32 +-
>>  .../Universal/Disk/PartitionDxe/PartitionDxe.inf   |    3 +-
>>  MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c     |  318 +++
>>  MdeModulePkg/Universal/Disk/UdfDxe/ComponentName.c |  185 ++
>>  MdeModulePkg/Universal/Disk/UdfDxe/File.c          |  908 ++++++++
>>  MdeModulePkg/Universal/Disk/UdfDxe/FileName.c      |  195 ++
>>  .../Universal/Disk/UdfDxe/FileSystemOperations.c   | 2447 
>> ++++++++++++++++++++
>>  MdeModulePkg/Universal/Disk/UdfDxe/Udf.c           |  344 +++
>>  MdeModulePkg/Universal/Disk/UdfDxe/Udf.h           | 1244 ++++++++++
>>  MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf      |   66 +
>>  MdePkg/Include/IndustryStandard/Udf.h              |   60 +
>>  Nt32Pkg/Nt32Pkg.dsc                                |    1 +
>>  Nt32Pkg/Nt32Pkg.fdf                                |    1 +
>>  OvmfPkg/OvmfPkgIa32.dsc                            |    1 +
>>  OvmfPkg/OvmfPkgIa32.fdf                            |    1 +
>>  OvmfPkg/OvmfPkgIa32X64.dsc                         |    1 +
>>  OvmfPkg/OvmfPkgIa32X64.fdf                         |    1 +
>>  OvmfPkg/OvmfPkgX64.dsc                             |    1 +
>>  OvmfPkg/OvmfPkgX64.fdf                             |    1 +
>>  25 files changed, 5821 insertions(+), 11 deletions(-)
>>  create mode 100644 MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/ComponentName.c
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/File.c
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/FileName.c
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/Udf.c
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/Udf.h
>>  create mode 100644 MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
>>  create mode 100644 MdePkg/Include/IndustryStandard/Udf.h
>>
>
> Pushed as commit range 7aee391fa3d0..b696c64d4fc3.
>

This code breaks the Clang build:

<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:937:11:
error: variable 'Status' is used uninitialized whenever 'if' condition
is false [-Werror,-Wsometimes-uninitialized]
      if (ReadFileInfo->FileData == NULL) {
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:1148:10:
note: uninitialized use occurs here
  return Status;
         ^~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:937:7:
note: remove the 'if' if its condition is always true
      if (ReadFileInfo->FileData == NULL) {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:932:16:
error: variable 'Status' is used uninitialized whenever 'if' condition
is false [-Werror,-Wsometimes-uninitialized]
    } else if (ReadFileInfo->Flags == READ_FILE_ALLOCATE_AND_READ) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:1148:10:
note: uninitialized use occurs here
  return Status;
         ^~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:932:12:
note: remove the 'if' if its condition is always true
    } else if (ReadFileInfo->Flags == READ_FILE_ALLOCATE_AND_READ) {
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:930:9:
error: variable 'Status' is used uninitialized whenever 'if' condition
is true [-Werror,-Wsometimes-uninitialized]
    if (ReadFileInfo->Flags == READ_FILE_GET_FILESIZE) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:1148:10:
note: uninitialized use occurs here
  return Status;
         ^~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:930:5:
note: remove the 'if' if its condition is always false
    if (ReadFileInfo->Flags == READ_FILE_GET_FILESIZE) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<https://ci.linaro.org/job/leg-virt-tianocore-edk2-upstream/ws/edk2/MdeModulePkg/Universal/Disk/UdfDxe/FileSystemOperations.c>:869:33:
note: initialize the variable 'Status' to silence this warning
  EFI_STATUS              Status;
                                ^
                                 = 0
3 errors generated.

Thanks,
Ard.
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to