* [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 @ 2021-06-02 7:15 Sascha Hauer 2021-06-02 7:15 ` [PATCH 2/2] partitions: efi: Fix MAX_PARTITION check Sascha Hauer 2021-06-02 9:20 ` [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 Ahmad Fatoum 0 siblings, 2 replies; 4+ messages in thread From: Sascha Hauer @ 2021-06-02 7:15 UTC (permalink / raw) To: Barebox List Having MAX_PARTITION defined to 8 is enough for a DOS partition table, but not for GPT. Increase it to the maximum GPT supports. It might be even better to allocate the partitions dynamically, but for nor take the easy way out. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- common/partitions/parser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/partitions/parser.h b/common/partitions/parser.h index 8ad134a9aa..69508932b3 100644 --- a/common/partitions/parser.h +++ b/common/partitions/parser.h @@ -11,7 +11,7 @@ #include <filetype.h> #include <linux/list.h> -#define MAX_PARTITION 8 +#define MAX_PARTITION 128 #define MAX_PARTITION_NAME 38 struct partition { -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] partitions: efi: Fix MAX_PARTITION check 2021-06-02 7:15 [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 Sascha Hauer @ 2021-06-02 7:15 ` Sascha Hauer 2021-06-02 9:17 ` Ahmad Fatoum 2021-06-02 9:20 ` [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 Ahmad Fatoum 1 sibling, 1 reply; 4+ messages in thread From: Sascha Hauer @ 2021-06-02 7:15 UTC (permalink / raw) To: Barebox List The GPT partiton parser has a check which should check if the GPT has more partitions than we support. This doesn't work because the loop iterating over the partitions exits with a maximum i of MAX_PARTITION, i > MAX_PARTITION will never be true. Fix the check. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- common/partitions/efi.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/common/partitions/efi.c b/common/partitions/efi.c index 437c3d64f8..135b08901a 100644 --- a/common/partitions/efi.c +++ b/common/partitions/efi.c @@ -446,7 +446,14 @@ static void efi_partition(void *buf, struct block_device *blk, } nb_part = le32_to_cpu(gpt->num_partition_entries); - for (i = 0; i < MAX_PARTITION && i < nb_part; i++) { + + if (nb_part > MAX_PARTITION) { + dev_warn(blk->dev, "GPT has more partitions than we support (%d) > max partition number (%d)\n", + nb_part, MAX_PARTITION); + nb_part = MAX_PARTITION; + } + + for (i = 0; i < nb_part; i++) { if (!is_pte_valid(&ptes[i], last_lba(blk))) { dev_dbg(blk->dev, "Invalid pte %d\n", i); return; @@ -460,10 +467,6 @@ static void efi_partition(void *buf, struct block_device *blk, snprintf(pentry->partuuid, sizeof(pentry->partuuid), "%pUl", &ptes[i].unique_partition_guid); pd->used_entries++; } - - if (i > MAX_PARTITION) - dev_warn(blk->dev, "num_partition_entries (%d) > max partition number (%d)\n", - nb_part, MAX_PARTITION); } static struct partition_parser efi_partition_parser = { -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] partitions: efi: Fix MAX_PARTITION check 2021-06-02 7:15 ` [PATCH 2/2] partitions: efi: Fix MAX_PARTITION check Sascha Hauer @ 2021-06-02 9:17 ` Ahmad Fatoum 0 siblings, 0 replies; 4+ messages in thread From: Ahmad Fatoum @ 2021-06-02 9:17 UTC (permalink / raw) To: Sascha Hauer, Barebox List On 02.06.21 09:15, Sascha Hauer wrote: > The GPT partiton parser has a check which should check if the GPT has > more partitions than we support. This doesn't work because the loop > iterating over the partitions exits with a maximum i of MAX_PARTITION, > i > MAX_PARTITION will never be true. Fix the check. > > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de> > --- > common/partitions/efi.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/common/partitions/efi.c b/common/partitions/efi.c > index 437c3d64f8..135b08901a 100644 > --- a/common/partitions/efi.c > +++ b/common/partitions/efi.c > @@ -446,7 +446,14 @@ static void efi_partition(void *buf, struct block_device *blk, > } > > nb_part = le32_to_cpu(gpt->num_partition_entries); > - for (i = 0; i < MAX_PARTITION && i < nb_part; i++) { > + > + if (nb_part > MAX_PARTITION) { > + dev_warn(blk->dev, "GPT has more partitions than we support (%d) > max partition number (%d)\n", > + nb_part, MAX_PARTITION); > + nb_part = MAX_PARTITION; > + } > + > + for (i = 0; i < nb_part; i++) { > if (!is_pte_valid(&ptes[i], last_lba(blk))) { > dev_dbg(blk->dev, "Invalid pte %d\n", i); > return; > @@ -460,10 +467,6 @@ static void efi_partition(void *buf, struct block_device *blk, > snprintf(pentry->partuuid, sizeof(pentry->partuuid), "%pUl", &ptes[i].unique_partition_guid); > pd->used_entries++; > } > - > - if (i > MAX_PARTITION) > - dev_warn(blk->dev, "num_partition_entries (%d) > max partition number (%d)\n", > - nb_part, MAX_PARTITION); > } > > static struct partition_parser efi_partition_parser = { > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 2021-06-02 7:15 [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 Sascha Hauer 2021-06-02 7:15 ` [PATCH 2/2] partitions: efi: Fix MAX_PARTITION check Sascha Hauer @ 2021-06-02 9:20 ` Ahmad Fatoum 1 sibling, 0 replies; 4+ messages in thread From: Ahmad Fatoum @ 2021-06-02 9:20 UTC (permalink / raw) To: Sascha Hauer, Barebox List On 02.06.21 09:15, Sascha Hauer wrote: > Having MAX_PARTITION defined to 8 is enough for a DOS partition table, > but not for GPT. Increase it to the maximum GPT supports. It might be > even better to allocate the partitions dynamically, but for nor take the > easy way out. Given that struct partition_desc is only ever dynamically allocated, I think that's ok. > Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Reviwed-by: Ahmad Fatoum <a.fatoum@pengutronix.de> > --- > common/partitions/parser.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/common/partitions/parser.h b/common/partitions/parser.h > index 8ad134a9aa..69508932b3 100644 > --- a/common/partitions/parser.h > +++ b/common/partitions/parser.h > @@ -11,7 +11,7 @@ > #include <filetype.h> > #include <linux/list.h> > > -#define MAX_PARTITION 8 > +#define MAX_PARTITION 128 > #define MAX_PARTITION_NAME 38 > > struct partition { > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-06-02 9:22 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-02 7:15 [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 Sascha Hauer 2021-06-02 7:15 ` [PATCH 2/2] partitions: efi: Fix MAX_PARTITION check Sascha Hauer 2021-06-02 9:17 ` Ahmad Fatoum 2021-06-02 9:20 ` [PATCH 1/2] partitions: Increase MAX_PARTITION to 128 Ahmad Fatoum
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox