diff mbox series

[2/3] pc-bios/s390-ccw: break loop if a null block number is reached

Message ID 20200924085926.21709-3-mhartmay@linux.ibm.com
State New
Headers show
Series pc-bios: s390x: fix corner cases in booting from ECKD | expand

Commit Message

Marc Hartmayer Sept. 24, 2020, 8:59 a.m. UTC
Break the loop if `cur_block_nr` is a null block number because this
means that the end of chunk is reached. In this case we will try to
boot the default entry.

Fixes: ba831b25262a ("s390-ccw: read stage2 boot loader data to find menu")
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
---
 pc-bios/s390-ccw/bootmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Huth Sept. 24, 2020, 11:49 a.m. UTC | #1
On 24/09/2020 10.59, Marc Hartmayer wrote:
> Break the loop if `cur_block_nr` is a null block number because this
> means that the end of chunk is reached. In this case we will try to
> boot the default entry.
> 
> Fixes: ba831b25262a ("s390-ccw: read stage2 boot loader data to find menu")
> Reviewed-by: Collin Walling <walling@linux.ibm.com>
> Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
> ---
>  pc-bios/s390-ccw/bootmap.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
> index 0d29dceaa3cc..08f16c5595a3 100644
> --- a/pc-bios/s390-ccw/bootmap.c
> +++ b/pc-bios/s390-ccw/bootmap.c
> @@ -192,7 +192,7 @@ static int eckd_get_boot_menu_index(block_number_t s1b_block_nr)
>      for (i = 0; i < STAGE2_BLK_CNT_MAX; i++) {
>          cur_block_nr = eckd_block_num(&s1b->seek[i].chs);
>  
> -        if (!cur_block_nr) {
> +        if (!cur_block_nr || is_null_block_number(cur_block_nr)) {
>              break;
>          }

Reviewed-by: Thomas Huth <thuth@redhat.com>

I'll queue the two patches on my s390-ccw bios branch. Just let me know
if you'd like to have the "< ... - 3" changed into "<= ... - 4" in the
first patch, I can tweak it directly if you like.

 Thomas
Marc Hartmayer Sept. 24, 2020, 2:10 p.m. UTC | #2
On Thu, Sep 24, 2020 at 01:49 PM +0200, Thomas Huth <thuth@redhat.com> wrote:
> On 24/09/2020 10.59, Marc Hartmayer wrote:

>> Break the loop if `cur_block_nr` is a null block number because this

>> means that the end of chunk is reached. In this case we will try to

>> boot the default entry.

>> 

>> Fixes: ba831b25262a ("s390-ccw: read stage2 boot loader data to find menu")

>> Reviewed-by: Collin Walling <walling@linux.ibm.com>

>> Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>

>> ---

>>  pc-bios/s390-ccw/bootmap.c | 2 +-

>>  1 file changed, 1 insertion(+), 1 deletion(-)

>> 

>> diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c

>> index 0d29dceaa3cc..08f16c5595a3 100644

>> --- a/pc-bios/s390-ccw/bootmap.c

>> +++ b/pc-bios/s390-ccw/bootmap.c

>> @@ -192,7 +192,7 @@ static int eckd_get_boot_menu_index(block_number_t s1b_block_nr)

>>      for (i = 0; i < STAGE2_BLK_CNT_MAX; i++) {

>>          cur_block_nr = eckd_block_num(&s1b->seek[i].chs);

>>  

>> -        if (!cur_block_nr) {

>> +        if (!cur_block_nr || is_null_block_number(cur_block_nr)) {

>>              break;

>>          }

>

> Reviewed-by: Thomas Huth <thuth@redhat.com>

>

> I'll queue the two patches on my s390-ccw bios branch. Just let me know

> if you'd like to have the "< ... - 3" changed into "<= ... - 4" in the

> first patch, I can tweak it directly if you like.


Yes, please change it to <= … - 4. Thanks!

>

>  Thomas

>

-- 
Kind regards / Beste Grüße
   Marc Hartmayer

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen 
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
diff mbox series

Patch

diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
index 0d29dceaa3cc..08f16c5595a3 100644
--- a/pc-bios/s390-ccw/bootmap.c
+++ b/pc-bios/s390-ccw/bootmap.c
@@ -192,7 +192,7 @@  static int eckd_get_boot_menu_index(block_number_t s1b_block_nr)
     for (i = 0; i < STAGE2_BLK_CNT_MAX; i++) {
         cur_block_nr = eckd_block_num(&s1b->seek[i].chs);
 
-        if (!cur_block_nr) {
+        if (!cur_block_nr || is_null_block_number(cur_block_nr)) {
             break;
         }