2019-07-25 20:32:03

by Josh Poimboeuf

[permalink] [raw]
Subject: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

Objtool reports:

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable

__copy_from_user() already does both STAC and CLAC, so the
user_access_end() in its error path adds an extra unnecessary CLAC.

Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
Reported-by: Thomas Gleixner <[email protected]>
Reported-by: Sedat Dilek <[email protected]>
Acked-by: Peter Zijlstra (Intel) <[email protected]>
Tested-by: Nick Desaulniers <[email protected]>
Tested-by: Sedat Dilek <[email protected]>
Link: https://github.com/ClangBuiltLinux/linux/issues/617
Signed-off-by: Josh Poimboeuf <[email protected]>
---
.../gpu/drm/i915/gem/i915_gem_execbuffer.c | 20 +++++++++----------
1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 5fae0e50aad0..41dab9ea33cd 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1628,6 +1628,7 @@ static int check_relocations(const struct drm_i915_gem_exec_object2 *entry)

static int eb_copy_relocations(const struct i915_execbuffer *eb)
{
+ struct drm_i915_gem_relocation_entry *relocs;
const unsigned int count = eb->buffer_count;
unsigned int i;
int err;
@@ -1635,7 +1636,6 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)
for (i = 0; i < count; i++) {
const unsigned int nreloc = eb->exec[i].relocation_count;
struct drm_i915_gem_relocation_entry __user *urelocs;
- struct drm_i915_gem_relocation_entry *relocs;
unsigned long size;
unsigned long copied;

@@ -1663,14 +1663,8 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)

if (__copy_from_user((char *)relocs + copied,
(char __user *)urelocs + copied,
- len)) {
-end_user:
- user_access_end();
-end:
- kvfree(relocs);
- err = -EFAULT;
- goto err;
- }
+ len))
+ goto end;

copied += len;
} while (copied < size);
@@ -1699,10 +1693,14 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)

return 0;

+end_user:
+ user_access_end();
+end:
+ kvfree(relocs);
+ err = -EFAULT;
err:
while (i--) {
- struct drm_i915_gem_relocation_entry *relocs =
- u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr);
+ relocs = u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr);
if (eb->exec[i].relocation_count)
kvfree(relocs);
}
--
2.20.1



2019-07-25 21:56:42

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Thu, 25 Jul 2019, Josh Poimboeuf wrote:

> Objtool reports:
>
> drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
>
> __copy_from_user() already does both STAC and CLAC, so the
> user_access_end() in its error path adds an extra unnecessary CLAC.
>
> Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> Reported-by: Thomas Gleixner <[email protected]>
> Reported-by: Sedat Dilek <[email protected]>
> Acked-by: Peter Zijlstra (Intel) <[email protected]>
> Tested-by: Nick Desaulniers <[email protected]>
> Tested-by: Sedat Dilek <[email protected]>
> Link: https://github.com/ClangBuiltLinux/linux/issues/617
> Signed-off-by: Josh Poimboeuf <[email protected]>

Reviewed-by: Thomas Gleixner <[email protected]>


2019-07-26 20:10:33

by Chris Wilson

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

Quoting Thomas Gleixner (2019-07-26 20:18:32)
> On Fri, 26 Jul 2019, Chris Wilson wrote:
> > Quoting Thomas Gleixner (2019-07-25 22:55:45)
> > > On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
> > >
> > > > Objtool reports:
> > > >
> > > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> > > >
> > > > __copy_from_user() already does both STAC and CLAC, so the
> > > > user_access_end() in its error path adds an extra unnecessary CLAC.
> > > >
> > > > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > > > Reported-by: Thomas Gleixner <[email protected]>
> > > > Reported-by: Sedat Dilek <[email protected]>
> > > > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > > > Tested-by: Nick Desaulniers <[email protected]>
> > > > Tested-by: Sedat Dilek <[email protected]>
> > > > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > > > Signed-off-by: Josh Poimboeuf <[email protected]>
> > >
> > > Reviewed-by: Thomas Gleixner <[email protected]>
> >
> > Which tree do you plan to apply it to? I can put in drm-intel, and with
> > the fixes tag it will percolate through to 5.3 and beyond, but if you
> > want to apply it directly to squash the build warnings, feel free.
>
> It would be nice to get it into 5.3. I can route it linuxwards if you give
> an Acked-by, but I'm happy to hand it to you :)

Acked-by: Chris Wilson <[email protected]>
-Chris

2019-07-26 22:46:57

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Fri, 26 Jul 2019, Chris Wilson wrote:
> Quoting Thomas Gleixner (2019-07-25 22:55:45)
> > On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
> >
> > > Objtool reports:
> > >
> > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> > >
> > > __copy_from_user() already does both STAC and CLAC, so the
> > > user_access_end() in its error path adds an extra unnecessary CLAC.
> > >
> > > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > > Reported-by: Thomas Gleixner <[email protected]>
> > > Reported-by: Sedat Dilek <[email protected]>
> > > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > > Tested-by: Nick Desaulniers <[email protected]>
> > > Tested-by: Sedat Dilek <[email protected]>
> > > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > > Signed-off-by: Josh Poimboeuf <[email protected]>
> >
> > Reviewed-by: Thomas Gleixner <[email protected]>
>
> Which tree do you plan to apply it to? I can put in drm-intel, and with
> the fixes tag it will percolate through to 5.3 and beyond, but if you
> want to apply it directly to squash the build warnings, feel free.

It would be nice to get it into 5.3. I can route it linuxwards if you give
an Acked-by, but I'm happy to hand it to you :)

Thanks,

tglx

2019-07-26 23:38:41

by Chris Wilson

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

Quoting Thomas Gleixner (2019-07-25 22:55:45)
> On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
>
> > Objtool reports:
> >
> > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> >
> > __copy_from_user() already does both STAC and CLAC, so the
> > user_access_end() in its error path adds an extra unnecessary CLAC.
> >
> > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > Reported-by: Thomas Gleixner <[email protected]>
> > Reported-by: Sedat Dilek <[email protected]>
> > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > Tested-by: Nick Desaulniers <[email protected]>
> > Tested-by: Sedat Dilek <[email protected]>
> > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > Signed-off-by: Josh Poimboeuf <[email protected]>
>
> Reviewed-by: Thomas Gleixner <[email protected]>

Which tree do you plan to apply it to? I can put in drm-intel, and with
the fixes tag it will percolate through to 5.3 and beyond, but if you
want to apply it directly to squash the build warnings, feel free.
-Chris

2019-07-31 13:51:16

by Sedat Dilek

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Fri, Jul 26, 2019 at 9:30 PM Chris Wilson <[email protected]> wrote:
>
> Quoting Thomas Gleixner (2019-07-26 20:18:32)
> > On Fri, 26 Jul 2019, Chris Wilson wrote:
> > > Quoting Thomas Gleixner (2019-07-25 22:55:45)
> > > > On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
> > > >
> > > > > Objtool reports:
> > > > >
> > > > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> > > > >
> > > > > __copy_from_user() already does both STAC and CLAC, so the
> > > > > user_access_end() in its error path adds an extra unnecessary CLAC.
> > > > >
> > > > > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > > > > Reported-by: Thomas Gleixner <[email protected]>
> > > > > Reported-by: Sedat Dilek <[email protected]>
> > > > > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > > > > Tested-by: Nick Desaulniers <[email protected]>
> > > > > Tested-by: Sedat Dilek <[email protected]>
> > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > > > > Signed-off-by: Josh Poimboeuf <[email protected]>
> > > >
> > > > Reviewed-by: Thomas Gleixner <[email protected]>
> > >
> > > Which tree do you plan to apply it to? I can put in drm-intel, and with
> > > the fixes tag it will percolate through to 5.3 and beyond, but if you
> > > want to apply it directly to squash the build warnings, feel free.
> >
> > It would be nice to get it into 5.3. I can route it linuxwards if you give
> > an Acked-by, but I'm happy to hand it to you :)
>
> Acked-by: Chris Wilson <[email protected]>

Thomas did you take this through tip tree after Chris' ACK?

- Sedat -

2019-08-05 19:31:16

by Sedat Dilek

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Wed, Jul 31, 2019 at 2:25 PM Sedat Dilek <[email protected]> wrote:
>
> On Fri, Jul 26, 2019 at 9:30 PM Chris Wilson <[email protected]> wrote:
> >
> > Quoting Thomas Gleixner (2019-07-26 20:18:32)
> > > On Fri, 26 Jul 2019, Chris Wilson wrote:
> > > > Quoting Thomas Gleixner (2019-07-25 22:55:45)
> > > > > On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
> > > > >
> > > > > > Objtool reports:
> > > > > >
> > > > > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> > > > > >
> > > > > > __copy_from_user() already does both STAC and CLAC, so the
> > > > > > user_access_end() in its error path adds an extra unnecessary CLAC.
> > > > > >
> > > > > > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > > > > > Reported-by: Thomas Gleixner <[email protected]>
> > > > > > Reported-by: Sedat Dilek <[email protected]>
> > > > > > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > > > > > Tested-by: Nick Desaulniers <[email protected]>
> > > > > > Tested-by: Sedat Dilek <[email protected]>
> > > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > > > > > Signed-off-by: Josh Poimboeuf <[email protected]>
> > > > >
> > > > > Reviewed-by: Thomas Gleixner <[email protected]>
> > > >
> > > > Which tree do you plan to apply it to? I can put in drm-intel, and with
> > > > the fixes tag it will percolate through to 5.3 and beyond, but if you
> > > > want to apply it directly to squash the build warnings, feel free.
> > >
> > > It would be nice to get it into 5.3. I can route it linuxwards if you give
> > > an Acked-by, but I'm happy to hand it to you :)
> >
> > Acked-by: Chris Wilson <[email protected]>
>
> Thomas did you take this through tip tree after Chris' ACK?
>

Hi,

Gentle ping...
Thomas and Chris: Will someone of you pick this up?
As "objtool: Improve UACCESS coverage" [1] went trough tip tree I
highly appreciate to do so with this one.

Thanks.

Regards,
- Sedat -

[1] https://git.kernel.org/linus/882a0db9d143e5e8dac54b96e83135bccd1f68d1
[2] https://github.com/ClangBuiltLinux/linux/issues/617

2019-08-06 13:01:50

by Josh Poimboeuf

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Mon, Aug 05, 2019 at 09:29:53PM +0200, Sedat Dilek wrote:
> On Wed, Jul 31, 2019 at 2:25 PM Sedat Dilek <[email protected]> wrote:
> >
> > On Fri, Jul 26, 2019 at 9:30 PM Chris Wilson <[email protected]> wrote:
> > >
> > > Quoting Thomas Gleixner (2019-07-26 20:18:32)
> > > > On Fri, 26 Jul 2019, Chris Wilson wrote:
> > > > > Quoting Thomas Gleixner (2019-07-25 22:55:45)
> > > > > > On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
> > > > > >
> > > > > > > Objtool reports:
> > > > > > >
> > > > > > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> > > > > > >
> > > > > > > __copy_from_user() already does both STAC and CLAC, so the
> > > > > > > user_access_end() in its error path adds an extra unnecessary CLAC.
> > > > > > >
> > > > > > > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > > > > > > Reported-by: Thomas Gleixner <[email protected]>
> > > > > > > Reported-by: Sedat Dilek <[email protected]>
> > > > > > > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > > > > > > Tested-by: Nick Desaulniers <[email protected]>
> > > > > > > Tested-by: Sedat Dilek <[email protected]>
> > > > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > > > > > > Signed-off-by: Josh Poimboeuf <[email protected]>
> > > > > >
> > > > > > Reviewed-by: Thomas Gleixner <[email protected]>
> > > > >
> > > > > Which tree do you plan to apply it to? I can put in drm-intel, and with
> > > > > the fixes tag it will percolate through to 5.3 and beyond, but if you
> > > > > want to apply it directly to squash the build warnings, feel free.
> > > >
> > > > It would be nice to get it into 5.3. I can route it linuxwards if you give
> > > > an Acked-by, but I'm happy to hand it to you :)
> > >
> > > Acked-by: Chris Wilson <[email protected]>
> >
> > Thomas did you take this through tip tree after Chris' ACK?
> >
>
> Hi,
>
> Gentle ping...
> Thomas and Chris: Will someone of you pick this up?
> As "objtool: Improve UACCESS coverage" [1] went trough tip tree I
> highly appreciate to do so with this one.

I think Thomas has gone on holiday, so hopefully Chris can pick it up
after all.

--
Josh

2019-08-08 20:16:32

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Tue, Aug 6, 2019 at 5:59 AM Josh Poimboeuf <[email protected]> wrote:
>
> On Mon, Aug 05, 2019 at 09:29:53PM +0200, Sedat Dilek wrote:
> > On Wed, Jul 31, 2019 at 2:25 PM Sedat Dilek <[email protected]> wrote:
> > >
> > > On Fri, Jul 26, 2019 at 9:30 PM Chris Wilson <[email protected]> wrote:
> > > >
> > > > Quoting Thomas Gleixner (2019-07-26 20:18:32)
> > > > > On Fri, 26 Jul 2019, Chris Wilson wrote:
> > > > > > Quoting Thomas Gleixner (2019-07-25 22:55:45)
> > > > > > > On Thu, 25 Jul 2019, Josh Poimboeuf wrote:
> > > > > > >
> > > > > > > > Objtool reports:
> > > > > > > >
> > > > > > > > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable
> > > > > > > >
> > > > > > > > __copy_from_user() already does both STAC and CLAC, so the
> > > > > > > > user_access_end() in its error path adds an extra unnecessary CLAC.
> > > > > > > >
> > > > > > > > Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
> > > > > > > > Reported-by: Thomas Gleixner <[email protected]>
> > > > > > > > Reported-by: Sedat Dilek <[email protected]>
> > > > > > > > Acked-by: Peter Zijlstra (Intel) <[email protected]>
> > > > > > > > Tested-by: Nick Desaulniers <[email protected]>
> > > > > > > > Tested-by: Sedat Dilek <[email protected]>
> > > > > > > > Link: https://github.com/ClangBuiltLinux/linux/issues/617
> > > > > > > > Signed-off-by: Josh Poimboeuf <[email protected]>
> > > > > > >
> > > > > > > Reviewed-by: Thomas Gleixner <[email protected]>
> > > > > >
> > > > > > Which tree do you plan to apply it to? I can put in drm-intel, and with
> > > > > > the fixes tag it will percolate through to 5.3 and beyond, but if you
> > > > > > want to apply it directly to squash the build warnings, feel free.
> > > > >
> > > > > It would be nice to get it into 5.3. I can route it linuxwards if you give
> > > > > an Acked-by, but I'm happy to hand it to you :)
> > > >
> > > > Acked-by: Chris Wilson <[email protected]>
> > >
> > > Thomas did you take this through tip tree after Chris' ACK?
> > >
> >
> > Hi,
> >
> > Gentle ping...
> > Thomas and Chris: Will someone of you pick this up?
> > As "objtool: Improve UACCESS coverage" [1] went trough tip tree I
> > highly appreciate to do so with this one.
>
> I think Thomas has gone on holiday, so hopefully Chris can pick it up
> after all.

tglx just picked up 2 other patches of mine, bumping just in case he's
not picking up patches while on vacation. ;)
--
Thanks,
~Nick Desaulniers

2019-08-08 20:23:06

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Thu, 8 Aug 2019, Nick Desaulniers wrote:
> On Tue, Aug 6, 2019 at 5:59 AM Josh Poimboeuf <[email protected]> wrote:
> > > Gentle ping...
> > > Thomas and Chris: Will someone of you pick this up?
> > > As "objtool: Improve UACCESS coverage" [1] went trough tip tree I
> > > highly appreciate to do so with this one.
> >
> > I think Thomas has gone on holiday, so hopefully Chris can pick it up
> > after all.
>
> tglx just picked up 2 other patches of mine, bumping just in case he's
> not picking up patches while on vacation. ;)

I'm only half on vacation :)

So I can pick it up.

2019-08-08 23:05:25

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Thu, Aug 8, 2019 at 1:22 PM Thomas Gleixner <[email protected]> wrote:
> > tglx just picked up 2 other patches of mine, bumping just in case he's
> > not picking up patches while on vacation. ;)
>
> I'm only half on vacation :)
>
> So I can pick it up.

Thanks, will send half margaritas.

--
Thanks,
~Nick Desaulniers

2019-08-09 20:20:41

by Sedat Dilek

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Fri, Aug 9, 2019 at 1:03 AM Nick Desaulniers <[email protected]> wrote:
>
> On Thu, Aug 8, 2019 at 1:22 PM Thomas Gleixner <[email protected]> wrote:
> > > tglx just picked up 2 other patches of mine, bumping just in case he's
> > > not picking up patches while on vacation. ;)
> >
> > I'm only half on vacation :)
> >
> > So I can pick it up.
>
> Thanks, will send half margaritas.
>

Sends some Turkish Cay.

- Sedat -

Subject: [tip:core/urgent] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

Commit-ID: e6a9522ac3ff59980ea00e070b6b8573aface36a
Gitweb: https://git.kernel.org/tip/e6a9522ac3ff59980ea00e070b6b8573aface36a
Author: Josh Poimboeuf <[email protected]>
AuthorDate: Thu, 25 Jul 2019 15:29:57 -0500
Committer: Thomas Gleixner <[email protected]>
CommitDate: Fri, 9 Aug 2019 23:13:25 +0200

drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

Objtool reports:

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable

__copy_from_user() already does both STAC and CLAC, so the
user_access_end() in its error path adds an extra unnecessary CLAC.

Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case")
Reported-by: Thomas Gleixner <[email protected]>
Reported-by: Sedat Dilek <[email protected]>
Signed-off-by: Josh Poimboeuf <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Tested-by: Nick Desaulniers <[email protected]>
Tested-by: Sedat Dilek <[email protected]>
Acked-by: Peter Zijlstra (Intel) <[email protected]>
Acked-by: Chris Wilson <[email protected]>
Link: https://github.com/ClangBuiltLinux/linux/issues/617
Link: https://lkml.kernel.org/r/51a4155c5bc2ca847a9cbe85c1c11918bb193141.1564086017.git.jpoimboe@redhat.com

---
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 5fae0e50aad0..41dab9ea33cd 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1628,6 +1628,7 @@ static int check_relocations(const struct drm_i915_gem_exec_object2 *entry)

static int eb_copy_relocations(const struct i915_execbuffer *eb)
{
+ struct drm_i915_gem_relocation_entry *relocs;
const unsigned int count = eb->buffer_count;
unsigned int i;
int err;
@@ -1635,7 +1636,6 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)
for (i = 0; i < count; i++) {
const unsigned int nreloc = eb->exec[i].relocation_count;
struct drm_i915_gem_relocation_entry __user *urelocs;
- struct drm_i915_gem_relocation_entry *relocs;
unsigned long size;
unsigned long copied;

@@ -1663,14 +1663,8 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb)

if (__copy_from_user((char *)relocs + copied,
(char __user *)urelocs + copied,
- len)) {
-end_user:
- user_access_end();
-end:
- kvfree(relocs);
- err = -EFAULT;
- goto err;
- }
+ len))
+ goto end;

copied += len;
} while (copied < size);
@@ -1699,10 +1693,14 @@ end:

return 0;

+end_user:
+ user_access_end();
+end:
+ kvfree(relocs);
+ err = -EFAULT;
err:
while (i--) {
- struct drm_i915_gem_relocation_entry *relocs =
- u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr);
+ relocs = u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr);
if (eb->exec[i].relocation_count)
kvfree(relocs);
}

2019-08-10 06:00:27

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path

On Fri, 9 Aug 2019, Sedat Dilek wrote:
> On Fri, Aug 9, 2019 at 1:03 AM Nick Desaulniers <[email protected]> wrote:
> >
> > On Thu, Aug 8, 2019 at 1:22 PM Thomas Gleixner <[email protected]> wrote:
> > > > tglx just picked up 2 other patches of mine, bumping just in case he's
> > > > not picking up patches while on vacation. ;)
> > >
> > > I'm only half on vacation :)
> > >
> > > So I can pick it up.
> >
> > Thanks, will send half margaritas.
> >
>
> Sends some Turkish Cay.

One day, I'm going to collect all the things people promised to send or buy
me in the past 15 years. That's going to be a really huge party :)