On 3/30/23 08:10, Alexey Dobriyan wrote: > Joe Lawrence wrote: >> +static int update_strtab(struct elf *elf) >> +{ >> >> + buf = malloc(new_size); >> + if (!buf) { >> + WARN("malloc failed"); >> + return -1; >> + } >> + memcpy(buf, (void *)strtab->data, orig_size); > > This code is called realloc(). :-) > >> +static int write_file(struct elf *elf, const char *file) >> +{ >> >> + fd = creat(file, 0664); >> + e = elf_begin(fd, ELF_C_WRITE, NULL); > > elf_end() doesn't close descriptor, so there is potentially corrupted > data. There is no unlink() call if writes fail as well. > >> +void elf_close(struct elf *elf) >> +{ >> + >> + if (elf->fd > 0) >> + close(elf->fd); > > Techically, it is "fd >= 0". > >> +filechk_klp_map = \ >> + echo "klp-convert-symbol-data.0.1"; \ >> + echo "*vmlinux"; \ >> + $(NM) -f posix vmlinux | cut -d\ -f1; \ >> + sort $(MODORDER) $(MODULES_LIVEPATCH) | \ > > This probably should be "LC_ALL=C sort" for speed and reproducibility (?). > Thanks, will incorporate these into the next version. -- Joe