Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5bbd721 authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

s390/ptrace: guarded storage regset for the current task



The regset functions for guarded storage are supposed to work on
the current task as well. For task == current add the required
load and store instructions for the guarded storage control block.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 53d7f25f
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -1160,6 +1160,8 @@ static int s390_gs_cb_get(struct task_struct *target,
		return -ENODEV;
	if (!data)
		return -ENODATA;
	if (target == current)
		save_gs_cb(data);
	return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
				   data, 0, sizeof(struct gs_cb));
}
@@ -1170,6 +1172,7 @@ static int s390_gs_cb_set(struct task_struct *target,
			  const void *kbuf, const void __user *ubuf)
{
	struct gs_cb *data = target->thread.gs_cb;
	int rc;

	if (!MACHINE_HAS_GS)
		return -ENODEV;
@@ -1177,10 +1180,18 @@ static int s390_gs_cb_set(struct task_struct *target,
		data = kzalloc(sizeof(*data), GFP_KERNEL);
		if (!data)
			return -ENOMEM;
		data->gsd = 25;
		target->thread.gs_cb = data;
		if (target == current)
			__ctl_set_bit(2, 4);
	} else if (target == current) {
		save_gs_cb(data);
	}
	return user_regset_copyin(&pos, &count, &kbuf, &ubuf,
	rc = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
				data, 0, sizeof(struct gs_cb));
	if (target == current)
		restore_gs_cb(data);
	return rc;
}

static int s390_gs_bc_get(struct task_struct *target,