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

Commit 525fb3ca authored by Jens Wiklander's avatar Jens Wiklander Committed by Victor Chong
Browse files

BACKPORT: tee: add tee_param_is_memref() for driver use



Change-Id: I917f754955a9d89d3216cb551488f28d8ed25cb2
Reviewed-by: default avatarEtienne Carriere <etienne.carriere@linaro.org>
Signed-off-by: default avatarJens Wiklander <jens.wiklander@linaro.org>
(cherry picked from commit 84debcc53533f162bf11f24e6a503d227c175cbe)
Signed-off-by: default avatarVictor Chong <victor.chong@linaro.org>
parent cdfc8df1
Loading
Loading
Loading
Loading
+2 −14
Original line number Diff line number Diff line
@@ -221,18 +221,6 @@ static int params_to_user(struct tee_ioctl_param __user *uparams,
	return 0;
}

static bool param_is_memref(struct tee_param *param)
{
	switch (param->attr & TEE_IOCTL_PARAM_ATTR_TYPE_MASK) {
	case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT:
	case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT:
	case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT:
		return true;
	default:
		return false;
	}
}

static int tee_ioctl_open_session(struct tee_context *ctx,
				  struct tee_ioctl_buf_data __user *ubuf)
{
@@ -296,7 +284,7 @@ static int tee_ioctl_open_session(struct tee_context *ctx,
	if (params) {
		/* Decrease ref count for all valid shared memory pointers */
		for (n = 0; n < arg.num_params; n++)
			if (param_is_memref(params + n) &&
			if (tee_param_is_memref(params + n) &&
			    params[n].u.memref.shm)
				tee_shm_put(params[n].u.memref.shm);
		kfree(params);
@@ -358,7 +346,7 @@ static int tee_ioctl_invoke(struct tee_context *ctx,
	if (params) {
		/* Decrease ref count for all valid shared memory pointers */
		for (n = 0; n < arg.num_params; n++)
			if (param_is_memref(params + n) &&
			if (tee_param_is_memref(params + n) &&
			    params[n].u.memref.shm)
				tee_shm_put(params[n].u.memref.shm);
		kfree(params);
+12 −0
Original line number Diff line number Diff line
@@ -275,4 +275,16 @@ int tee_shm_get_id(struct tee_shm *shm);
 */
struct tee_shm *tee_shm_get_from_id(struct tee_context *ctx, int id);

static inline bool tee_param_is_memref(struct tee_param *param)
{
	switch (param->attr & TEE_IOCTL_PARAM_ATTR_TYPE_MASK) {
	case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT:
	case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT:
	case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT:
		return true;
	default:
		return false;
	}
}

#endif /*__TEE_DRV_H*/