@@ -99,7 +99,7 @@ struct xol_area {
99
99
atomic_t slot_count ; /* number of in-use slots */
100
100
unsigned long * bitmap ; /* 0 = free slot */
101
101
102
- struct page * pages [ 2 ] ;
102
+ struct page * page ;
103
103
/*
104
104
* We keep the vma's vm_start rather than a pointer to the vma
105
105
* itself. The probed process or a naughty kernel module could make
@@ -1437,7 +1437,7 @@ static vm_fault_t xol_fault(const struct vm_special_mapping *sm,
1437
1437
{
1438
1438
struct xol_area * area = vma -> vm_mm -> uprobes_state .xol_area ;
1439
1439
1440
- vmf -> page = area -> pages [ 0 ] ;
1440
+ vmf -> page = area -> page ;
1441
1441
get_page (vmf -> page );
1442
1442
return 0 ;
1443
1443
}
@@ -1512,23 +1512,22 @@ static struct xol_area *__create_xol_area(unsigned long vaddr)
1512
1512
if (!area -> bitmap )
1513
1513
goto free_area ;
1514
1514
1515
- area -> pages [ 0 ] = alloc_page (GFP_HIGHUSER );
1516
- if (!area -> pages [ 0 ] )
1515
+ area -> page = alloc_page (GFP_HIGHUSER );
1516
+ if (!area -> page )
1517
1517
goto free_bitmap ;
1518
- area -> pages [1 ] = NULL ;
1519
1518
1520
1519
area -> vaddr = vaddr ;
1521
1520
init_waitqueue_head (& area -> wq );
1522
1521
/* Reserve the 1st slot for get_trampoline_vaddr() */
1523
1522
set_bit (0 , area -> bitmap );
1524
1523
atomic_set (& area -> slot_count , 1 );
1525
1524
insns = arch_uprobe_trampoline (& insns_size );
1526
- arch_uprobe_copy_ixol (area -> pages [ 0 ] , 0 , insns , insns_size );
1525
+ arch_uprobe_copy_ixol (area -> page , 0 , insns , insns_size );
1527
1526
1528
1527
if (!xol_add_vma (mm , area ))
1529
1528
return area ;
1530
1529
1531
- __free_page (area -> pages [ 0 ] );
1530
+ __free_page (area -> page );
1532
1531
free_bitmap :
1533
1532
kfree (area -> bitmap );
1534
1533
free_area :
@@ -1570,7 +1569,7 @@ void uprobe_clear_state(struct mm_struct *mm)
1570
1569
if (!area )
1571
1570
return ;
1572
1571
1573
- put_page (area -> pages [ 0 ] );
1572
+ put_page (area -> page );
1574
1573
kfree (area -> bitmap );
1575
1574
kfree (area );
1576
1575
}
@@ -1637,7 +1636,7 @@ static unsigned long xol_get_insn_slot(struct uprobe *uprobe)
1637
1636
if (unlikely (!xol_vaddr ))
1638
1637
return 0 ;
1639
1638
1640
- arch_uprobe_copy_ixol (area -> pages [ 0 ] , xol_vaddr ,
1639
+ arch_uprobe_copy_ixol (area -> page , xol_vaddr ,
1641
1640
& uprobe -> arch .ixol , sizeof (uprobe -> arch .ixol ));
1642
1641
1643
1642
return xol_vaddr ;
0 commit comments