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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user