Page MenuHomeFreeBSD

D13695.id.diff
No OneTemporary

D13695.id.diff

Index: head/stand/fdt/fdt_loader_cmd.c
===================================================================
--- head/stand/fdt/fdt_loader_cmd.c
+++ head/stand/fdt/fdt_loader_cmd.c
@@ -386,7 +386,8 @@
for (fp = file_findfile(NULL, "dtbo"); fp != NULL; fp = fp->f_next) {
printf("applying DTB overlay '%s'\n", fp->f_name);
COPYOUT(fp->f_addr, overlay, fp->f_size);
- fdt_overlay_apply(new_fdtp, overlay, fp->f_size);
+ /* Both overlay and new_fdtp may be modified in place */
+ fdt_overlay_apply(new_fdtp, overlay);
}
free(fdtp);
Index: head/stand/fdt/fdt_overlay.h
===================================================================
--- head/stand/fdt/fdt_overlay.h
+++ head/stand/fdt/fdt_overlay.h
@@ -29,6 +29,6 @@
#ifndef FDT_OVERLAY_H
#define FDT_OVERLAY_H
-int fdt_overlay_apply(void *main_fdtp, void *overlay_fdtp, size_t overlay_length);
+int fdt_overlay_apply(void *main_fdtp, void *overlay_fdtp);
#endif /* FDT_OVERLAY_H */
Index: head/stand/fdt/fdt_overlay.c
===================================================================
--- head/stand/fdt/fdt_overlay.c
+++ head/stand/fdt/fdt_overlay.c
@@ -409,41 +409,23 @@
}
int
-fdt_overlay_apply(void *main_fdtp, void *overlay_fdtp, size_t overlay_length)
+fdt_overlay_apply(void *main_fdtp, void *overlay_fdtp)
{
- void *overlay_copy;
- int rv;
- rv = 0;
-
- /* We modify overlay in-place, so we need writable copy */
- overlay_copy = malloc(overlay_length);
- if (overlay_copy == NULL) {
- printf("failed to allocate memory for overlay copy\n");
+ if (fdt_overlay_do_fixups(main_fdtp, overlay_fdtp) < 0) {
+ printf("failed to perform fixups in overlay\n");
return (-1);
}
- memcpy(overlay_copy, overlay_fdtp, overlay_length);
-
- if (fdt_overlay_do_fixups(main_fdtp, overlay_copy) < 0) {
- printf("failed to perform fixups in overlay\n");
- rv = -1;
- goto out;
- }
-
- if (fdt_overlay_do_local_fixups(main_fdtp, overlay_copy) < 0) {
+ if (fdt_overlay_do_local_fixups(main_fdtp, overlay_fdtp) < 0) {
printf("failed to perform local fixups in overlay\n");
- rv = -1;
- goto out;
+ return (-1);
}
- if (fdt_overlay_apply_fragments(main_fdtp, overlay_copy) < 0) {
+ if (fdt_overlay_apply_fragments(main_fdtp, overlay_fdtp) < 0) {
printf("failed to apply fragments\n");
- rv = -1;
+ return (-1);
}
-out:
- free(overlay_copy);
-
- return (rv);
+ return (0);
}

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 8, 1:18 AM (10 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31062644
Default Alt Text
D13695.id.diff (2 KB)

Event Timeline