[SRU][Xenial][PATCH 0/1] Linux 4.4.155 stable release build is broken on ppc64

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][Xenial][PATCH 0/1] Linux 4.4.155 stable release build is broken on ppc64

Kleber Souza
BugLink: https://bugs.launchpad.net/bugs/1795662

== SRU Justification ==
The 4.4.y stable backport c9fadf27006b for upstream commit 1bd6a1c4b80a
("powerpc/fadump: handle crash memory ranges array index overflow"),
cherry-picked for Xenial as part of bug 1792419, introduces a build failure
on ppc by returning a int in a void function. In 4.4.y register_fadump()
returns void because 98b8cd7f7564 ("powerpc/fadump: Return error when fadump
registration fails") hasn't been backported for this stable release.

== Fix ==
98b8cd7f7564 ("powerpc/fadump: Return error when fadump registration fails")

Backport needed only for context adjustment.

== Regression Potential ==
Low. The patch only handles the error return by some function and adds an
additional error message. Limited to powerpc.

== Test Case ==
Compile the kernel for powerpc (tested with ppc64el).

Michal Suchanek (1):
  powerpc/fadump: Return error when fadump registration fails

 arch/powerpc/kernel/fadump.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][Xenial][PATCH 1/1] powerpc/fadump: Return error when fadump registration fails

Kleber Souza
From: Michal Suchanek <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1795662

 - log an error message when registration fails and no error code listed
   in the switch is returned
 - translate the hv error code to posix error code and return it from
   fw_register
 - return the posix error code from fw_register to the process writing
   to sysfs
 - return EEXIST on re-registration
 - return success on deregistration when fadump is not registered
 - return ENODEV when no memory is reserved for fadump

Signed-off-by: Michal Suchanek <[hidden email]>
Tested-by: Hari Bathini <[hidden email]>
[mpe: Use pr_err() to shrink the error print]
Signed-off-by: Michael Ellerman <[hidden email]>
(backported from commit 98b8cd7f75643e0a442d7a4c1cef2c9d53b7e92b)
Signed-off-by: Kleber Sacilotto de Souza <[hidden email]>
---
 arch/powerpc/kernel/fadump.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index 4e71df4048a9..6c217b931ccb 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -360,9 +360,9 @@ static int __init early_fadump_reserve_mem(char *p)
 }
 early_param("fadump_reserve_mem", early_fadump_reserve_mem);
 
-static void register_fw_dump(struct fadump_mem_struct *fdm)
+static int register_fw_dump(struct fadump_mem_struct *fdm)
 {
- int rc;
+ int rc, err;
  unsigned int wait_time;
 
  pr_debug("Registering for firmware-assisted kernel dump...\n");
@@ -379,7 +379,11 @@ static void register_fw_dump(struct fadump_mem_struct *fdm)
 
  } while (wait_time);
 
+ err = -EIO;
  switch (rc) {
+ default:
+ pr_err("Failed to register. Unknown Error(%d).\n", rc);
+ break;
  case -1:
  printk(KERN_ERR "Failed to register firmware-assisted kernel"
  " dump. Hardware Error(%d).\n", rc);
@@ -387,18 +391,22 @@ static void register_fw_dump(struct fadump_mem_struct *fdm)
  case -3:
  printk(KERN_ERR "Failed to register firmware-assisted kernel"
  " dump. Parameter Error(%d).\n", rc);
+ err = -EINVAL;
  break;
  case -9:
  printk(KERN_ERR "firmware-assisted kernel dump is already "
  " registered.");
  fw_dump.dump_registered = 1;
+ err = -EEXIST;
  break;
  case 0:
  printk(KERN_INFO "firmware-assisted kernel dump registration"
  " is successful\n");
  fw_dump.dump_registered = 1;
+ err = 0;
  break;
  }
+ return err;
 }
 
 void crash_fadump(struct pt_regs *regs, const char *str)
@@ -997,7 +1005,7 @@ static unsigned long init_fadump_header(unsigned long addr)
  return addr;
 }
 
-static void register_fadump(void)
+static int register_fadump(void)
 {
  unsigned long addr;
  void *vaddr;
@@ -1008,7 +1016,7 @@ static void register_fadump(void)
  * assisted dump.
  */
  if (!fw_dump.reserve_dump_area_size)
- return;
+ return -ENODEV;
 
  ret = fadump_setup_crash_memory_ranges();
  if (ret)
@@ -1023,7 +1031,7 @@ static void register_fadump(void)
  fadump_create_elfcore_headers(vaddr);
 
  /* register the future kernel dump with firmware. */
- register_fw_dump(&fdm);
+ return register_fw_dump(&fdm);
 }
 
 static int fadump_unregister_dump(struct fadump_mem_struct *fdm)
@@ -1208,7 +1216,6 @@ static ssize_t fadump_register_store(struct kobject *kobj,
  switch (buf[0]) {
  case '0':
  if (fw_dump.dump_registered == 0) {
- ret = -EINVAL;
  goto unlock_out;
  }
  /* Un-register Firmware-assisted dump */
@@ -1216,11 +1223,11 @@ static ssize_t fadump_register_store(struct kobject *kobj,
  break;
  case '1':
  if (fw_dump.dump_registered == 1) {
- ret = -EINVAL;
+ ret = -EEXIST;
  goto unlock_out;
  }
  /* Register Firmware-assisted dump */
- register_fadump();
+ ret = register_fadump();
  break;
  default:
  ret = -EINVAL;
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][Xenial][PATCH 1/1] powerpc/fadump: Return error when fadump registration fails

Stefan Bader-2
On 02.10.2018 16:11, Kleber Sacilotto de Souza wrote:

> From: Michal Suchanek <[hidden email]>
>
> BugLink: https://bugs.launchpad.net/bugs/1795662
>
>  - log an error message when registration fails and no error code listed
>    in the switch is returned
>  - translate the hv error code to posix error code and return it from
>    fw_register
>  - return the posix error code from fw_register to the process writing
>    to sysfs
>  - return EEXIST on re-registration
>  - return success on deregistration when fadump is not registered
>  - return ENODEV when no memory is reserved for fadump
>
> Signed-off-by: Michal Suchanek <[hidden email]>
> Tested-by: Hari Bathini <[hidden email]>
> [mpe: Use pr_err() to shrink the error print]
> Signed-off-by: Michael Ellerman <[hidden email]>
> (backported from commit 98b8cd7f75643e0a442d7a4c1cef2c9d53b7e92b)
> Signed-off-by: Kleber Sacilotto de Souza <[hidden email]>
Acked-by: Stefan Bader <[hidden email]>

> ---
>  arch/powerpc/kernel/fadump.c | 23 +++++++++++++++--------
>  1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
> index 4e71df4048a9..6c217b931ccb 100644
> --- a/arch/powerpc/kernel/fadump.c
> +++ b/arch/powerpc/kernel/fadump.c
> @@ -360,9 +360,9 @@ static int __init early_fadump_reserve_mem(char *p)
>  }
>  early_param("fadump_reserve_mem", early_fadump_reserve_mem);
>  
> -static void register_fw_dump(struct fadump_mem_struct *fdm)
> +static int register_fw_dump(struct fadump_mem_struct *fdm)
>  {
> - int rc;
> + int rc, err;
>   unsigned int wait_time;
>  
>   pr_debug("Registering for firmware-assisted kernel dump...\n");
> @@ -379,7 +379,11 @@ static void register_fw_dump(struct fadump_mem_struct *fdm)
>  
>   } while (wait_time);
>  
> + err = -EIO;
>   switch (rc) {
> + default:
> + pr_err("Failed to register. Unknown Error(%d).\n", rc);
> + break;
>   case -1:
>   printk(KERN_ERR "Failed to register firmware-assisted kernel"
>   " dump. Hardware Error(%d).\n", rc);
> @@ -387,18 +391,22 @@ static void register_fw_dump(struct fadump_mem_struct *fdm)
>   case -3:
>   printk(KERN_ERR "Failed to register firmware-assisted kernel"
>   " dump. Parameter Error(%d).\n", rc);
> + err = -EINVAL;
>   break;
>   case -9:
>   printk(KERN_ERR "firmware-assisted kernel dump is already "
>   " registered.");
>   fw_dump.dump_registered = 1;
> + err = -EEXIST;
>   break;
>   case 0:
>   printk(KERN_INFO "firmware-assisted kernel dump registration"
>   " is successful\n");
>   fw_dump.dump_registered = 1;
> + err = 0;
>   break;
>   }
> + return err;
>  }
>  
>  void crash_fadump(struct pt_regs *regs, const char *str)
> @@ -997,7 +1005,7 @@ static unsigned long init_fadump_header(unsigned long addr)
>   return addr;
>  }
>  
> -static void register_fadump(void)
> +static int register_fadump(void)
>  {
>   unsigned long addr;
>   void *vaddr;
> @@ -1008,7 +1016,7 @@ static void register_fadump(void)
>   * assisted dump.
>   */
>   if (!fw_dump.reserve_dump_area_size)
> - return;
> + return -ENODEV;
>  
>   ret = fadump_setup_crash_memory_ranges();
>   if (ret)
> @@ -1023,7 +1031,7 @@ static void register_fadump(void)
>   fadump_create_elfcore_headers(vaddr);
>  
>   /* register the future kernel dump with firmware. */
> - register_fw_dump(&fdm);
> + return register_fw_dump(&fdm);
>  }
>  
>  static int fadump_unregister_dump(struct fadump_mem_struct *fdm)
> @@ -1208,7 +1216,6 @@ static ssize_t fadump_register_store(struct kobject *kobj,
>   switch (buf[0]) {
>   case '0':
>   if (fw_dump.dump_registered == 0) {
> - ret = -EINVAL;
>   goto unlock_out;
>   }
>   /* Un-register Firmware-assisted dump */
> @@ -1216,11 +1223,11 @@ static ssize_t fadump_register_store(struct kobject *kobj,
>   break;
>   case '1':
>   if (fw_dump.dump_registered == 1) {
> - ret = -EINVAL;
> + ret = -EEXIST;
>   goto unlock_out;
>   }
>   /* Register Firmware-assisted dump */
> - register_fadump();
> + ret = register_fadump();
>   break;
>   default:
>   ret = -EINVAL;
>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][Xenial][PATCH 0/1] Linux 4.4.155 stable release build is broken on ppc64

Thadeu Lima de Souza Cascardo-3
In reply to this post by Kleber Souza
Acked-by: Thadeu Lima de Souza Cascardo <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [SRU][Xenial][PATCH 0/1] Linux 4.4.155 stable release build is broken on ppc64

Kleber Souza
In reply to this post by Kleber Souza
On 10/02/18 16:11, Kleber Sacilotto de Souza wrote:

> BugLink: https://bugs.launchpad.net/bugs/1795662
>
> == SRU Justification ==
> The 4.4.y stable backport c9fadf27006b for upstream commit 1bd6a1c4b80a
> ("powerpc/fadump: handle crash memory ranges array index overflow"),
> cherry-picked for Xenial as part of bug 1792419, introduces a build failure
> on ppc by returning a int in a void function. In 4.4.y register_fadump()
> returns void because 98b8cd7f7564 ("powerpc/fadump: Return error when fadump
> registration fails") hasn't been backported for this stable release.
>
> == Fix ==
> 98b8cd7f7564 ("powerpc/fadump: Return error when fadump registration fails")
>
> Backport needed only for context adjustment.
>
> == Regression Potential ==
> Low. The patch only handles the error return by some function and adds an
> additional error message. Limited to powerpc.
>
> == Test Case ==
> Compile the kernel for powerpc (tested with ppc64el).
>
> Michal Suchanek (1):
>   powerpc/fadump: Return error when fadump registration fails
>
>  arch/powerpc/kernel/fadump.c | 23 +++++++++++++++--------
>  1 file changed, 15 insertions(+), 8 deletions(-)
>

Applied to xenial/master-next branch.

Thanks,
Kleber

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team