* [PATCH] tee: optee: Fix incorrect page free bug
@ 2021-12-15 10:20 Sumit Garg
2021-12-15 15:29 ` Jens Wiklander
2021-12-15 15:32 ` Tyler Hicks
0 siblings, 2 replies; 4+ messages in thread
From: Sumit Garg @ 2021-12-15 10:20 UTC (permalink / raw)
To: op-tee
[-- Attachment #1: Type: text/plain, Size: 1071 bytes --]
Pointer to the allocated pages (struct page *page) has already
progressed towards the end of allocation. It is incorrect to perform
__free_pages(page, order) using this pointer as we would free any
arbitrary pages. Fix this by stop modifying the page pointer.
Fixes: ec185dd3ab25 ("optee: Fix memory leak when failing to register shm pages")
Reported-by: Patrik Lantz <patrik.lantz@axis.com>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
---
drivers/tee/optee/core.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
index ab2edfcc6c70..2a66a5203d2f 100644
--- a/drivers/tee/optee/core.c
+++ b/drivers/tee/optee/core.c
@@ -48,10 +48,8 @@ int optee_pool_op_alloc_helper(struct tee_shm_pool_mgr *poolm,
goto err;
}
- for (i = 0; i < nr_pages; i++) {
- pages[i] = page;
- page++;
- }
+ for (i = 0; i < nr_pages; i++)
+ pages[i] = page + i;
shm->flags |= TEE_SHM_REGISTER;
rc = shm_register(shm->ctx, shm, pages, nr_pages,
--
2.25.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] tee: optee: Fix incorrect page free bug
2021-12-15 10:20 [PATCH] tee: optee: Fix incorrect page free bug Sumit Garg
@ 2021-12-15 15:29 ` Jens Wiklander
2021-12-15 15:32 ` Tyler Hicks
1 sibling, 0 replies; 4+ messages in thread
From: Jens Wiklander @ 2021-12-15 15:29 UTC (permalink / raw)
To: op-tee
[-- Attachment #1: Type: text/plain, Size: 1485 bytes --]
On Wed, Dec 15, 2021 at 11:20 AM Sumit Garg <sumit.garg@linaro.org> wrote:
>
> Pointer to the allocated pages (struct page *page) has already
> progressed towards the end of allocation. It is incorrect to perform
> __free_pages(page, order) using this pointer as we would free any
> arbitrary pages. Fix this by stop modifying the page pointer.
>
> Fixes: ec185dd3ab25 ("optee: Fix memory leak when failing to register shm pages")
> Reported-by: Patrik Lantz <patrik.lantz@axis.com>
> Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
> ---
> drivers/tee/optee/core.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
Looks good to me, but I think we should cc stable since that was done
in the patch fixed by this.
Thanks,
Jens
>
> diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
> index ab2edfcc6c70..2a66a5203d2f 100644
> --- a/drivers/tee/optee/core.c
> +++ b/drivers/tee/optee/core.c
> @@ -48,10 +48,8 @@ int optee_pool_op_alloc_helper(struct tee_shm_pool_mgr *poolm,
> goto err;
> }
>
> - for (i = 0; i < nr_pages; i++) {
> - pages[i] = page;
> - page++;
> - }
> + for (i = 0; i < nr_pages; i++)
> + pages[i] = page + i;
>
> shm->flags |= TEE_SHM_REGISTER;
> rc = shm_register(shm->ctx, shm, pages, nr_pages,
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tee: optee: Fix incorrect page free bug
2021-12-15 10:20 [PATCH] tee: optee: Fix incorrect page free bug Sumit Garg
2021-12-15 15:29 ` Jens Wiklander
@ 2021-12-15 15:32 ` Tyler Hicks
1 sibling, 0 replies; 4+ messages in thread
From: Tyler Hicks @ 2021-12-15 15:32 UTC (permalink / raw)
To: op-tee
[-- Attachment #1: Type: text/plain, Size: 1274 bytes --]
On 2021-12-15 15:50:11, Sumit Garg wrote:
> Pointer to the allocated pages (struct page *page) has already
> progressed towards the end of allocation. It is incorrect to perform
> __free_pages(page, order) using this pointer as we would free any
> arbitrary pages. Fix this by stop modifying the page pointer.
>
> Fixes: ec185dd3ab25 ("optee: Fix memory leak when failing to register shm pages")
> Reported-by: Patrik Lantz <patrik.lantz@axis.com>
> Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com>
Thanks for fixing this!
Tyler
> ---
> drivers/tee/optee/core.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
> index ab2edfcc6c70..2a66a5203d2f 100644
> --- a/drivers/tee/optee/core.c
> +++ b/drivers/tee/optee/core.c
> @@ -48,10 +48,8 @@ int optee_pool_op_alloc_helper(struct tee_shm_pool_mgr *poolm,
> goto err;
> }
>
> - for (i = 0; i < nr_pages; i++) {
> - pages[i] = page;
> - page++;
> - }
> + for (i = 0; i < nr_pages; i++)
> + pages[i] = page + i;
>
> shm->flags |= TEE_SHM_REGISTER;
> rc = shm_register(shm->ctx, shm, pages, nr_pages,
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tee: optee: Fix incorrect page free bug
[not found] < <CAHUa44Hqitcmj3=0FDOxsh0NytdpKyTEUUC2J8fcOmX9ZxQWsA@mail.gmail.com>
@ 2021-12-15 15:34 ` Tyler Hicks
0 siblings, 0 replies; 4+ messages in thread
From: Tyler Hicks @ 2021-12-15 15:34 UTC (permalink / raw)
To: op-tee
[-- Attachment #1: Type: text/plain, Size: 1860 bytes --]
On 2021-12-15 16:29:08, Jens Wiklander wrote:
> On Wed, Dec 15, 2021 at 11:20 AM Sumit Garg <sumit.garg@linaro.org> wrote:
> >
> > Pointer to the allocated pages (struct page *page) has already
> > progressed towards the end of allocation. It is incorrect to perform
> > __free_pages(page, order) using this pointer as we would free any
> > arbitrary pages. Fix this by stop modifying the page pointer.
> >
> > Fixes: ec185dd3ab25 ("optee: Fix memory leak when failing to register shm pages")
> > Reported-by: Patrik Lantz <patrik.lantz@axis.com>
> > Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
> > ---
> > drivers/tee/optee/core.c | 6 ++----
> > 1 file changed, 2 insertions(+), 4 deletions(-)
>
> Looks good to me, but I think we should cc stable since that was done
> in the patch fixed by this.
Yes, please add the 'Cc: stable(a)vger.kernel.org' tag because it will
ensure that it'll be applied to the affected stable kernels or, if
there's a conflict, that we'll get an email notification to provide a
manual backport.
Tyler
>
> Thanks,
> Jens
>
> >
> > diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
> > index ab2edfcc6c70..2a66a5203d2f 100644
> > --- a/drivers/tee/optee/core.c
> > +++ b/drivers/tee/optee/core.c
> > @@ -48,10 +48,8 @@ int optee_pool_op_alloc_helper(struct tee_shm_pool_mgr *poolm,
> > goto err;
> > }
> >
> > - for (i = 0; i < nr_pages; i++) {
> > - pages[i] = page;
> > - page++;
> > - }
> > + for (i = 0; i < nr_pages; i++)
> > + pages[i] = page + i;
> >
> > shm->flags |= TEE_SHM_REGISTER;
> > rc = shm_register(shm->ctx, shm, pages, nr_pages,
> > --
> > 2.25.1
> >
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-12-15 15:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-15 10:20 [PATCH] tee: optee: Fix incorrect page free bug Sumit Garg
2021-12-15 15:29 ` Jens Wiklander
2021-12-15 15:32 ` Tyler Hicks
[not found] < <CAHUa44Hqitcmj3=0FDOxsh0NytdpKyTEUUC2J8fcOmX9ZxQWsA@mail.gmail.com>
2021-12-15 15:34 ` Tyler Hicks
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.