к сожалению, патч наложился наполовину - вторая часть не подходит
Вот то, что есть в kernel/futex.c:
static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q,
struct task_struct *newowner,
struct rw_semaphore *fshared)
{
u32 newtid = task_pid_vnr(newowner) | FUTEX_WAITERS;
struct futex_pi_state *pi_state = q->pi_state;
struct task_struct *oldowner = pi_state->owner;
а вот вторая часть патча:
@@ -1047,7 +1047,7 @@ static void unqueue_me_pi(struct futex_q
static int fixup_pi_state_owner(u32 *uaddr, struct futex_q *q,
struct task_struct *newowner)
{
- u32 newtid = newowner->pid | FUTEX_WAITERS;
+ u32 newtid = virt_pid(newowner) | FUTEX_WAITERS;
struct futex_pi_state *pi_state = q->pi_state;
u32 uval, curval, newval;
int ret;
понять, можно ли task_pid_vnr заменить на virt_pid, я не смог 