static void kvm_send_hwpoison_signal(unsigned long address,
                                     struct vm_area_struct *vma)
 {
-       siginfo_t info;
-
-       clear_siginfo(&info);
-       info.si_signo   = SIGBUS;
-       info.si_errno   = 0;
-       info.si_code    = BUS_MCEERR_AR;
-       info.si_addr    = (void __user *)address;
+       short lsb;
 
        if (is_vm_hugetlb_page(vma))
-               info.si_addr_lsb = huge_page_shift(hstate_vma(vma));
+               lsb = huge_page_shift(hstate_vma(vma));
        else
-               info.si_addr_lsb = PAGE_SHIFT;
+               lsb = PAGE_SHIFT;
 
-       send_sig_info(SIGBUS, &info, current);
+       send_sig_mceerr(BUS_MCEERR_AR, (void __user *)address, lsb, current);
 }
 
 static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,