@@ -1646,21 +1646,19 @@ static unsigned long xol_take_insn_slot(struct xol_area *area)
1646
1646
1647
1647
/*
1648
1648
* xol_get_insn_slot - allocate a slot for xol.
1649
- * Returns the allocated slot address or 0.
1650
1649
*/
1651
- static unsigned long xol_get_insn_slot (struct uprobe * uprobe )
1650
+ static bool xol_get_insn_slot (struct uprobe * uprobe )
1652
1651
{
1653
- struct xol_area * area ;
1654
- unsigned long xol_vaddr ;
1652
+ struct uprobe_task * utask = current -> utask ;
1653
+ struct xol_area * area = get_xol_area () ;
1655
1654
1656
- area = get_xol_area ();
1657
1655
if (!area )
1658
- return 0 ;
1656
+ return false ;
1659
1657
1660
- xol_vaddr = xol_take_insn_slot (area );
1661
- arch_uprobe_copy_ixol (area -> page , xol_vaddr ,
1658
+ utask -> xol_vaddr = xol_take_insn_slot (area );
1659
+ arch_uprobe_copy_ixol (area -> page , utask -> xol_vaddr ,
1662
1660
& uprobe -> arch .ixol , sizeof (uprobe -> arch .ixol ));
1663
- return xol_vaddr ;
1661
+ return true ;
1664
1662
}
1665
1663
1666
1664
/*
@@ -1948,21 +1946,17 @@ static int
1948
1946
pre_ssout (struct uprobe * uprobe , struct pt_regs * regs , unsigned long bp_vaddr )
1949
1947
{
1950
1948
struct uprobe_task * utask = current -> utask ;
1951
- unsigned long xol_vaddr ;
1952
1949
int err ;
1953
1950
1954
1951
if (!try_get_uprobe (uprobe ))
1955
1952
return - EINVAL ;
1956
1953
1957
- xol_vaddr = xol_get_insn_slot (uprobe );
1958
- if (!xol_vaddr ) {
1954
+ if (!xol_get_insn_slot (uprobe )) {
1959
1955
err = - ENOMEM ;
1960
1956
goto err_out ;
1961
1957
}
1962
1958
1963
- utask -> xol_vaddr = xol_vaddr ;
1964
1959
utask -> vaddr = bp_vaddr ;
1965
-
1966
1960
err = arch_uprobe_pre_xol (& uprobe -> arch , regs );
1967
1961
if (unlikely (err )) {
1968
1962
xol_free_insn_slot (current );
0 commit comments