On Fri, Aug 06, 2021 at 12:51:10PM +0800, Michael Chang via Grub-devel wrote:
[snip]
> diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c
> index 90f82b2d3..c2bb2b6eb 100644
> --- a/grub-core/disk/cryptodisk.c
> +++ b/grub-core/disk/cryptodisk.c
> @@ -1040,6 +1040,7 @@ grub_cryptodisk_cheat_mount (const char *sourcedev,
> const char *cheat)
> grub_cryptodisk_t dev;
> grub_cryptodisk_dev_t cr;
> grub_disk_t source;
> + unsigned int cheat_sector_size;
>
> /* Try to open disk. */
> source = grub_disk_open (sourcedev);
> @@ -1062,6 +1063,25 @@ grub_cryptodisk_cheat_mount (const char *sourcedev,
> const char *cheat)
> if (!dev)
> continue;
>
> + /* Use the sector size and count of the cheat device */
> + dev->cheat_fd = grub_util_fd_open (cheat, GRUB_UTIL_FD_O_RDONLY);
> + if (!GRUB_UTIL_FD_IS_VALID (dev->cheat_fd))
> + {
> + grub_free (dev);
> + return grub_errno;
> + }
> + dev->total_sectors = grub_util_get_fd_size (dev->cheat_fd, cheat,
> &cheat_sector_size);
> + if (dev->total_sectors == -1)
> + {
> + grub_util_fd_close (dev->cheat_fd);
> + grub_free (dev);
> + return grub_errno;
> + }We may want to print error messages for both error cases. Otherwise it's hard to tell why cheat mounting might've failed. > + dev->log_sector_size = cheat_sector_size; > + dev->total_sectors >>= dev->log_sector_size; > + grub_util_fd_close (dev->cheat_fd); > + dev->cheat_fd = GRUB_UTIL_FD_INVALID; Wouldn't it make more sense to just use a separate variable for the FD? Feels kind of weird to put it into `dev->cheat_fd`, only to clone and unset the member variable immediately after we're done again. In any case, thanks for the patch. It does look a lot more sensible compared to what I'd been doing. Do you want to keep owning the patch and try to upstream it, or shall I pick it up as part of this patch series? I'd of course retain author information. Patrick
signature.asc
Description: PGP signature
_______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
