This adds the following commits from upstream: 53373d135579 dtc: Remove unused dts_version in dtc-lexer.l caf7465c5d60 libfdt: fdt_check_full: Handle FDT_NOP when FDT_END is expected 5976c4a66098 libfdt: fdt_rw: Introduce fdt_downgrade_version() 5bb5bedd347d fdtdump: Return an error code on wrong tag value 68b960e299f7 fdtdump: Remove dtb version check adba02caf554 dtc: Use a consistent type for basenamelen 8d15a63e84ff libfdt: Verify alignment of sub-blocks in dtb
Unified · Split
| @@ -324,7 +324,7 @@ ERROR(node_name_chars, check_node_name_chars, NODECHARS); · 323 unmodified lines | ||
| 324 | 324 | static void check_node_name_chars_strict(struct check *c, struct dt_info *dti, |
| 325 | 325 | struct node *node) |
| 326 | 326 | { |
| 327 | − int n = strspn(node->name, c->data); | |
| 327 | + size_t n = strspn(node->name, c->data); | |
| 328 | 328 | |
| 329 | 329 | if (n < node->basenamelen) |
| 330 | 330 | FAIL(c, dti, node, "Character '%c' not recommended in node name", |
| @@ -39,8 +39,6 @@ extern bool treesource_error; · 38 unmodified lines | ||
| 39 | 39 | #define DPRINT(fmt, ...) do { } while (0) |
| 40 | 40 | #endif |
| 41 | 41 | |
| 42 | −static int dts_version = 1; | |
| 43 | − | |
| 44 | 42 | #define BEGIN_DEFAULT() DPRINT("<V1>\n"); \ |
| 45 | 43 | BEGIN(V1); \ |
| 46 | 44 | |
| @@ -101,7 +99,6 @@ static void PRINTF(1, 2) lexical_error(const char *fmt, ...); · 54 unmodified lines | ||
| 101 | 99 | |
| 102 | 100 | <*>"/dts-v1/" { |
| 103 | 101 | DPRINT("Keyword: /dts-v1/\n"); |
| 104 | − dts_version = 1; | |
| 105 | 102 | BEGIN_DEFAULT(); |
| 106 | 103 | return DT_V1; |
| 107 | 104 | } |
| @@ -227,7 +227,7 @@ struct node { · 226 unmodified lines | ||
| 227 | 227 | struct node *next_sibling; |
| 228 | 228 | |
| 229 | 229 | char *fullpath; |
| 230 | − int basenamelen; | |
| 230 | + size_t basenamelen; | |
| 231 | 231 | |
| 232 | 232 | cell_t phandle; |
| 233 | 233 | int addr_cells, size_cells; |
| @@ -110,6 +110,14 @@ int fdt_check_header(const void *fdt) · 109 unmodified lines | ||
| 110 | 110 | || (fdt_totalsize(fdt) > INT_MAX)) |
| 111 | 111 | return -FDT_ERR_TRUNCATED; |
| 112 | 112 | |
| 113 | + /* memrsv block must be 8 byte aligned */ | |
| 114 | + if (fdt_off_mem_rsvmap(fdt) % sizeof(uint64_t)) | |
| 115 | + return -FDT_ERR_ALIGNMENT; | |
| 116 | + | |
| 117 | + /* Structure block must be 4 byte aligned */ | |
| 118 | + if (fdt_off_dt_struct(fdt) % FDT_TAGSIZE) | |
| 119 | + return -FDT_ERR_ALIGNMENT; | |
| 120 | + | |
| 113 | 121 | /* Bounds check memrsv block */ |
| 114 | 122 | if (!check_off_(hdrsize, fdt_totalsize(fdt), |
| 115 | 123 | fdt_off_mem_rsvmap(fdt))) |
| @@ -22,6 +22,12 @@ static int fdt_blocks_misordered_(const void *fdt, · 21 unmodified lines | ||
| 22 | 22 | (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt))); |
| 23 | 23 | } |
| 24 | 24 | |
| 25 | +static void fdt_downgrade_version(void *fdt) | |
| 26 | +{ | |
| 27 | + if (!can_assume(LATEST) && fdt_version(fdt) > FDT_LAST_SUPPORTED_VERSION) | |
| 28 | + fdt_set_version(fdt, FDT_LAST_SUPPORTED_VERSION); | |
| 29 | +} | |
| 30 | + | |
| 25 | 31 | static int fdt_rw_probe_(void *fdt) |
| 26 | 32 | { |
| 27 | 33 | if (can_assume(VALID_DTB)) |
| @@ -33,9 +39,8 @@ static int fdt_rw_probe_(void *fdt) · 5 unmodified lines | ||
| 33 | 39 | if (fdt_blocks_misordered_(fdt, sizeof(struct fdt_reserve_entry), |
| 34 | 40 | fdt_size_dt_struct(fdt))) |
| 35 | 41 | return -FDT_ERR_BADLAYOUT; |
| 36 | − if (!can_assume(LATEST) && fdt_version(fdt) > 17) | |
| 37 | − fdt_set_version(fdt, 17); | |
| 38 | 42 | |
| 43 | + fdt_downgrade_version(fdt); | |
| 39 | 44 | return 0; |
| 40 | 45 | } |
| 41 | 46 | |
| @@ -1 +1 @@ | ||
| 1 | −#define DTC_VERSION "DTC 1.7.2-ga26ef640" | |
| 1 | +#define DTC_VERSION "DTC 1.7.2-g53373d13" | |