scripts/dtc: Update to upstream version v1.6.1-66-gabbd523bae6e

Message ID 20230203172430.474431-1-robh@kernel.org
State New
Headers
Series scripts/dtc: Update to upstream version v1.6.1-66-gabbd523bae6e |

Commit Message

Rob Herring Feb. 3, 2023, 5:24 p.m. UTC
  This adds the following commits from upstream:

abbd523bae6e pylibfdt: Work-around SWIG limitations with flexible arrays
a41509bea3e7 libfdt: Replace deprecated 0-length arrays with proper flexible arrays
2cd89f862cdb dtc: Warning rather than error on possible truncation of cell values

Signed-off-by: Rob Herring <robh@kernel.org>
---
 scripts/dtc/dtc-parser.y  | 11 ++++++++---
 scripts/dtc/libfdt/fdt.h  |  4 ++--
 scripts/dtc/version_gen.h |  2 +-
 3 files changed, 11 insertions(+), 6 deletions(-)
  

Comments

Kees Cook Feb. 3, 2023, 5:34 p.m. UTC | #1
On Fri, Feb 03, 2023 at 11:24:29AM -0600, Rob Herring wrote:
> This adds the following commits from upstream:
> 
> abbd523bae6e pylibfdt: Work-around SWIG limitations with flexible arrays
> a41509bea3e7 libfdt: Replace deprecated 0-length arrays with proper flexible arrays
> 2cd89f862cdb dtc: Warning rather than error on possible truncation of cell values
> 
> Signed-off-by: Rob Herring <robh@kernel.org>

Thanks for your help with this!

Reviewed-by: Kees Cook <keescook@chromium.org>

-Kees

> ---
>  scripts/dtc/dtc-parser.y  | 11 ++++++++---
>  scripts/dtc/libfdt/fdt.h  |  4 ++--
>  scripts/dtc/version_gen.h |  2 +-
>  3 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y
> index 46457d4bc0aa..bff1337ec266 100644
> --- a/scripts/dtc/dtc-parser.y
> +++ b/scripts/dtc/dtc-parser.y
> @@ -404,9 +404,14 @@ arrayprefix:
>  				 * within the mask to one (i.e. | in the
>  				 * mask), all bits are one.
>  				 */
> -				if (($2 > mask) && (($2 | mask) != -1ULL))
> -					ERROR(&@2, "Value out of range for"
> -					      " %d-bit array element", $1.bits);
> +				if (($2 > mask) && (($2 | mask) != -1ULL)) {
> +					char *loc = srcpos_string(&@2);
> +					fprintf(stderr,
> +						"WARNING: %s: Value 0x%016" PRIx64
> +						" truncated to 0x%0*" PRIx64 "\n",
> +						loc, $2, $1.bits / 4, ($2 & mask));
> +					free(loc);
> +				}
>  			}
>  
>  			$$.data = data_append_integer($1.data, $2, $1.bits);
> diff --git a/scripts/dtc/libfdt/fdt.h b/scripts/dtc/libfdt/fdt.h
> index f2e68807f277..0c91aa7f67b5 100644
> --- a/scripts/dtc/libfdt/fdt.h
> +++ b/scripts/dtc/libfdt/fdt.h
> @@ -35,14 +35,14 @@ struct fdt_reserve_entry {
>  
>  struct fdt_node_header {
>  	fdt32_t tag;
> -	char name[0];
> +	char name[];
>  };
>  
>  struct fdt_property {
>  	fdt32_t tag;
>  	fdt32_t len;
>  	fdt32_t nameoff;
> -	char data[0];
> +	char data[];
>  };
>  
>  #endif /* !__ASSEMBLY */
> diff --git a/scripts/dtc/version_gen.h b/scripts/dtc/version_gen.h
> index 0f303087b043..99614ec1a289 100644
> --- a/scripts/dtc/version_gen.h
> +++ b/scripts/dtc/version_gen.h
> @@ -1 +1 @@
> -#define DTC_VERSION "DTC 1.6.1-g55778a03"
> +#define DTC_VERSION "DTC 1.6.1-gabbd523b"
> -- 
> 2.39.0
>
  

Patch

diff --git a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y
index 46457d4bc0aa..bff1337ec266 100644
--- a/scripts/dtc/dtc-parser.y
+++ b/scripts/dtc/dtc-parser.y
@@ -404,9 +404,14 @@  arrayprefix:
 				 * within the mask to one (i.e. | in the
 				 * mask), all bits are one.
 				 */
-				if (($2 > mask) && (($2 | mask) != -1ULL))
-					ERROR(&@2, "Value out of range for"
-					      " %d-bit array element", $1.bits);
+				if (($2 > mask) && (($2 | mask) != -1ULL)) {
+					char *loc = srcpos_string(&@2);
+					fprintf(stderr,
+						"WARNING: %s: Value 0x%016" PRIx64
+						" truncated to 0x%0*" PRIx64 "\n",
+						loc, $2, $1.bits / 4, ($2 & mask));
+					free(loc);
+				}
 			}
 
 			$$.data = data_append_integer($1.data, $2, $1.bits);
diff --git a/scripts/dtc/libfdt/fdt.h b/scripts/dtc/libfdt/fdt.h
index f2e68807f277..0c91aa7f67b5 100644
--- a/scripts/dtc/libfdt/fdt.h
+++ b/scripts/dtc/libfdt/fdt.h
@@ -35,14 +35,14 @@  struct fdt_reserve_entry {
 
 struct fdt_node_header {
 	fdt32_t tag;
-	char name[0];
+	char name[];
 };
 
 struct fdt_property {
 	fdt32_t tag;
 	fdt32_t len;
 	fdt32_t nameoff;
-	char data[0];
+	char data[];
 };
 
 #endif /* !__ASSEMBLY */
diff --git a/scripts/dtc/version_gen.h b/scripts/dtc/version_gen.h
index 0f303087b043..99614ec1a289 100644
--- a/scripts/dtc/version_gen.h
+++ b/scripts/dtc/version_gen.h
@@ -1 +1 @@ 
-#define DTC_VERSION "DTC 1.6.1-g55778a03"
+#define DTC_VERSION "DTC 1.6.1-gabbd523b"