2018-01-22 07:30:09

by Shunyong Yang

[permalink] [raw]
Subject: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

The type of arg passed to dmatest_callback is struct dmatest_done.
It refers to test_done in struct dmatest_thread, not done_wait.

Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
Signed-off-by: Yang Shunyong <[email protected]>
---
drivers/dma/dmatest.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index ec5f9d2bc820..906e85d6dedc 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
{
struct dmatest_done *done = arg;
struct dmatest_thread *thread =
- container_of(arg, struct dmatest_thread, done_wait);
+ container_of(arg, struct dmatest_thread, test_done);
if (!thread->done) {
done->done = true;
wake_up_all(done->wait);
--
1.8.3.1



2018-01-23 14:32:57

by Adam Wallis

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

On 1/22/2018 2:28 AM, Yang Shunyong wrote:
> The type of arg passed to dmatest_callback is struct dmatest_done.
> It refers to test_done in struct dmatest_thread, not done_wait.
>
> Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
> Signed-off-by: Yang Shunyong <[email protected]>
> ---
> drivers/dma/dmatest.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> index ec5f9d2bc820..906e85d6dedc 100644
> --- a/drivers/dma/dmatest.c
> +++ b/drivers/dma/dmatest.c
> @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
> {
> struct dmatest_done *done = arg;
> struct dmatest_thread *thread =
> - container_of(arg, struct dmatest_thread, done_wait);
> + container_of(arg, struct dmatest_thread, test_done);
> if (!thread->done) {
> done->done = true;
> wake_up_all(done->wait);
>
Thanks for the catch

Acked-by: Adam Wallis <[email protected]>
--
Adam Wallis
Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.

2018-01-24 01:50:19

by Shunyong Yang

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

Hi, Adam

On Tue, 2018-01-23 at 09:32 -0500, Adam Wallis wrote:
> On 1/22/2018 2:28 AM, Yang Shunyong wrote:
> >
> > The type of arg passed to dmatest_callback is struct dmatest_done.
> > It refers to test_done in struct dmatest_thread, not done_wait.
> >
> > Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
> > Signed-off-by: Yang Shunyong <[email protected]>
> > ---
> > ?drivers/dma/dmatest.c | 2 +-
> > ?1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> > index ec5f9d2bc820..906e85d6dedc 100644
> > --- a/drivers/dma/dmatest.c
> > +++ b/drivers/dma/dmatest.c
> > @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
> > ?{
> > ? struct dmatest_done *done = arg;
> > ? struct dmatest_thread *thread =
> > - container_of(arg, struct dmatest_thread,
> > done_wait);
> > + container_of(arg, struct dmatest_thread,
> > test_done);
> > ? if (!thread->done) {
> > ? done->done = true;
> > ? wake_up_all(done->wait);
> >
> Thanks for the catch
>
> Acked-by: Adam Wallis <[email protected]>

Thanks!

Shunyong

2018-01-24 18:35:44

by Adam Wallis

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

Vinod,

On 1/23/2018 8:47 PM, Yang, Shunyong wrote:
> Hi, Adam
>
> On Tue, 2018-01-23 at 09:32 -0500, Adam Wallis wrote:
>> On 1/22/2018 2:28 AM, Yang Shunyong wrote:
>>>
>>> The type of arg passed to dmatest_callback is struct dmatest_done.
>>> It refers to test_done in struct dmatest_thread, not done_wait.
>>>
>>> Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
>>> Signed-off-by: Yang Shunyong <[email protected]>
[..]
>>>
>> Thanks for the catch
>>
>> Acked-by: Adam Wallis <[email protected]>
>
> Thanks!
>
> Shunyong
>

Can we get this fix into the 4.16 kernel? This is an important fix.

Thanks

Adam

--
Adam Wallis
Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.

2018-01-29 04:41:57

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

On Mon, Jan 22, 2018 at 03:28:28PM +0800, Yang Shunyong wrote:
> The type of arg passed to dmatest_callback is struct dmatest_done.
> It refers to test_done in struct dmatest_thread, not done_wait.
>
> Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
> Signed-off-by: Yang Shunyong <[email protected]>
> ---
> drivers/dma/dmatest.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> index ec5f9d2bc820..906e85d6dedc 100644
> --- a/drivers/dma/dmatest.c
> +++ b/drivers/dma/dmatest.c
> @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
> {
> struct dmatest_done *done = arg;
> struct dmatest_thread *thread =
> - container_of(arg, struct dmatest_thread, done_wait);
> + container_of(arg, struct dmatest_thread, test_done);

This fixes it but one of the reason why compilers didn't catch this
was the void arg. I just tested and used 'done' as the argument here
rather than 'arg' and compiler was quick to point out the error.

So a better fix IMO would be:

-- >8 --

diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index ec5f9d2bc820..80cc2be6483c 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
{
struct dmatest_done *done = arg;
struct dmatest_thread *thread =
- container_of(arg, struct dmatest_thread, done_wait);
+ container_of(done, struct dmatest_thread, test_done);
if (!thread->done) {
done->done = true;
wake_up_all(done->wait);

--
~Vinod

2018-01-29 06:21:45

by Shunyong Yang

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

Hi, Vinod,

On Mon, 2018-01-29 at 10:15 +0530, Vinod Koul wrote:
> On Mon, Jan 22, 2018 at 03:28:28PM +0800, Yang Shunyong wrote:
> >
> > The type of arg passed to dmatest_callback is struct dmatest_done.
> > It refers to test_done in struct dmatest_thread, not done_wait.
> >
> > Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
> > Signed-off-by: Yang Shunyong <[email protected]>
> > ---
> > ?drivers/dma/dmatest.c | 2 +-
> > ?1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> > index ec5f9d2bc820..906e85d6dedc 100644
> > --- a/drivers/dma/dmatest.c
> > +++ b/drivers/dma/dmatest.c
> > @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
> > ?{
> > ? struct dmatest_done *done = arg;
> > ? struct dmatest_thread *thread =
> > - container_of(arg, struct dmatest_thread,
> > done_wait);
> > + container_of(arg, struct dmatest_thread,
> > test_done);
> This fixes it but one of the reason why compilers didn't catch this
> was the void arg. I just tested and used 'done' as the argument here
> rather than 'arg' and compiler was quick to point out the error.
>
> So a better fix IMO would be:
>
> -- >8 --
>
> diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> index ec5f9d2bc820..80cc2be6483c 100644
> --- a/drivers/dma/dmatest.c
> +++ b/drivers/dma/dmatest.c
> @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)
> ?{
> ????????struct dmatest_done *done = arg;
> ????????struct dmatest_thread *thread =
> -???????????????container_of(arg, struct dmatest_thread, done_wait);
> +???????????????container_of(done, struct dmatest_thread, test_done);
> ????????if (!thread->done) {
> ????????????????done->done = true;
> ????????????????wake_up_all(done->wait);
>

Thanks. I will send out v2 patch soon.

Shunyong

2018-02-11 09:29:30

by Wen He

[permalink] [raw]
Subject: RE: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback


Thanks for you, Shunyong.

Best Regards,
Wen He

> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Adam Wallis
> Sent: 2018年1月23日 22:32
> To: Yang Shunyong <[email protected]>;
> [email protected]
> Cc: [email protected]; [email protected];
> [email protected]; [email protected]; Graham Moore
> <[email protected]>; [email protected] >> Sinan Kaya
> <[email protected]>
> Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in
> dmatest_callback
>
> On 1/22/2018 2:28 AM, Yang Shunyong wrote:
> > The type of arg passed to dmatest_callback is struct dmatest_done.
> > It refers to test_done in struct dmatest_thread, not done_wait.
> >
> > Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait ...")
> > Signed-off-by: Yang Shunyong <[email protected]>
> > ---
> > drivers/dma/dmatest.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c index
> > ec5f9d2bc820..906e85d6dedc 100644
> > --- a/drivers/dma/dmatest.c
> > +++ b/drivers/dma/dmatest.c
> > @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg) {
> > struct dmatest_done *done = arg;
> > struct dmatest_thread *thread =
> > - container_of(arg, struct dmatest_thread, done_wait);
> > + container_of(arg, struct dmatest_thread, test_done);
> > if (!thread->done) {
> > done->done = true;
> > wake_up_all(done->wait);
> >
> Thanks for the catch
>
> Acked-by: Adam Wallis <[email protected]>
> --
> Adam Wallis
> Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies,
> Inc.
> Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux
> Foundation Collaborative Project.
> --
> To unsubscribe from this list: send the line "unsubscribe dmaengine" in the
> body of a message to [email protected] More majordomo info at
> https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fvger.
> kernel.org%2Fmajordomo-info.html&data=02%7C01%7Cwen.he_1%40nxp.co
> m%7C88161568a7fd4349149b08d5626e1661%7C686ea1d3bc2b4c6fa92cd9
> 9c5c301635%7C0%7C0%7C636523147354196622&sdata=txItgvD3P%2FrQq
> MSmpZlTY1rA1yUeWxMHTlELO5vwy84%3D&reserved=0

2018-02-13 05:57:31

by Shunyong Yang

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in dmatest_callback

Hi, Wen

You're welcome. That's why call this COMMUNITY! :-)

Shunyong.
Thanks.

On Sun, 2018-02-11 at 09:28 +0000, Wen He wrote:
> Thanks for you, Shunyong.
>
> Best Regards,
> Wen He
>
> >
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]] On Behalf Of Adam Wallis
> > Sent: 2018年1月23日 22:32
> > To: Yang Shunyong <[email protected]>;
> > [email protected]
> > Cc: [email protected]; [email protected];
> > [email protected]; [email protected]; Graham
> > Moore
> > <[email protected]>; [email protected] >> Sinan Kaya
> > <[email protected]>
> > Subject: Re: [PATCH] dmaengine: dmatest: fix container_of member in
> > dmatest_callback
> >
> > On 1/22/2018 2:28 AM, Yang Shunyong wrote:
> > >
> > > The type of arg passed to dmatest_callback is struct
> > > dmatest_done.
> > > It refers to test_done in struct dmatest_thread, not done_wait.
> > >
> > > Fixes: 6f6a23a213be ("dmaengine: dmatest: move callback wait
> > > ...")
> > > Signed-off-by: Yang Shunyong <[email protected]>
> > > ---
> > >  drivers/dma/dmatest.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c index
> > > ec5f9d2bc820..906e85d6dedc 100644
> > > --- a/drivers/dma/dmatest.c
> > > +++ b/drivers/dma/dmatest.c
> > > @@ -355,7 +355,7 @@ static void dmatest_callback(void *arg)  {
> > >   struct dmatest_done *done = arg;
> > >   struct dmatest_thread *thread =
> > > - container_of(arg, struct dmatest_thread,
> > > done_wait);
> > > + container_of(arg, struct dmatest_thread,
> > > test_done);
> > >   if (!thread->done) {
> > >   done->done = true;
> > >   wake_up_all(done->wait);
> > >
> > Thanks for the catch
> >
> > Acked-by: Adam Wallis <[email protected]>
> > --
> > Adam Wallis
> > Qualcomm Datacenter Technologies as an affiliate of Qualcomm
> > Technologies,
> > Inc.
> > Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a
> > Linux
> > Foundation Collaborative Project.
> > --
> > To unsubscribe from this list: send the line "unsubscribe
> > dmaengine" in the
> > body of a message to [email protected] More majordomo info
> > at
> > https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fv
> > ger.
> > kernel.org%2Fmajordomo-info.html&data=02%7C01%7Cwen.he_1%40nxp.co
> > m%7C88161568a7fd4349149b08d5626e1661%7C686ea1d3bc2b4c6fa92cd9
> > 9c5c301635%7C0%7C0%7C636523147354196622&sdata=txItgvD3P%2FrQq
> > MSmpZlTY1rA1yUeWxMHTlELO5vwy84%3D&reserved=0