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 (?).