s390 updates for 5.4-rc5
- Add R_390_GLOB_DAT relocation type support. This fixes boot problem on linux-next. - Fix memory leak in zcrypt. -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEE3QHqV+H2a8xAv27vjYWKoQLXFBgFAl20GckACgkQjYWKoQLX FBjMdAf9Ff/2AOphOTgkhb4rTM4iVBCR89f5XvsDiJsgYjfJJcr/iWlyu5/j83et 3mgAsg4DlsCum3XV6cYJ9hmVfFuSMiO04tWuQ0BOyc+s5LZrytvvqmtI7wkDvj8W 2L7LJ3hPJVDsEJQNKg8aixmGXkA8aa34JiXdDkDKzLIoW0Gs6Zybf5JpXAFZxQtM fFUYuDSE2qPPOOJYZTQgIvqjGH6EIleyWxWgLTKbIodlnqJIp7kfujxdkn08SbxF 3CRIMxujm4yGn0ETDOXyYYGtZtOSQTiIgDIlEMca4dK50ZEP6eyygXy6kDbMXAyj 1SMvZm+NohO/UmLrafiFriiLnLiMrg== =wcZ9 -----END PGP SIGNATURE----- Merge tag 's390-5.4-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux Pull s390 fixes from Vasily Gorbik: - Add R_390_GLOB_DAT relocation type support. This fixes boot problem on linux-next. - Fix memory leak in zcrypt * tag 's390-5.4-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/kaslr: add support for R_390_GLOB_DAT relocation type s390/zcrypt: fix memleak at release
This commit is contained in:
Коммит
f877bee5ea
|
@ -101,10 +101,18 @@ static void handle_relocs(unsigned long offset)
|
|||
dynsym = (Elf64_Sym *) vmlinux.dynsym_start;
|
||||
for (rela = rela_start; rela < rela_end; rela++) {
|
||||
loc = rela->r_offset + offset;
|
||||
val = rela->r_addend + offset;
|
||||
val = rela->r_addend;
|
||||
r_sym = ELF64_R_SYM(rela->r_info);
|
||||
if (r_sym)
|
||||
val += dynsym[r_sym].st_value;
|
||||
if (r_sym) {
|
||||
if (dynsym[r_sym].st_shndx != SHN_UNDEF)
|
||||
val += dynsym[r_sym].st_value + offset;
|
||||
} else {
|
||||
/*
|
||||
* 0 == undefined symbol table index (STN_UNDEF),
|
||||
* used for R_390_RELATIVE, only add KASLR offset
|
||||
*/
|
||||
val += offset;
|
||||
}
|
||||
r_type = ELF64_R_TYPE(rela->r_info);
|
||||
rc = arch_kexec_do_relocs(r_type, (void *) loc, val, 0);
|
||||
if (rc)
|
||||
|
|
|
@ -27,6 +27,7 @@ int arch_kexec_do_relocs(int r_type, void *loc, unsigned long val,
|
|||
*(u32 *)loc = val;
|
||||
break;
|
||||
case R_390_64: /* Direct 64 bit. */
|
||||
case R_390_GLOB_DAT:
|
||||
*(u64 *)loc = val;
|
||||
break;
|
||||
case R_390_PC16: /* PC relative 16 bit. */
|
||||
|
|
|
@ -522,8 +522,7 @@ static int zcrypt_release(struct inode *inode, struct file *filp)
|
|||
if (filp->f_inode->i_cdev == &zcrypt_cdev) {
|
||||
struct zcdn_device *zcdndev;
|
||||
|
||||
if (mutex_lock_interruptible(&ap_perms_mutex))
|
||||
return -ERESTARTSYS;
|
||||
mutex_lock(&ap_perms_mutex);
|
||||
zcdndev = find_zcdndev_by_devt(filp->f_inode->i_rdev);
|
||||
mutex_unlock(&ap_perms_mutex);
|
||||
if (zcdndev) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче