diff mbox series

[1/1] RDMA/rtrs: Fix the problem of variable not initialized fully

Message ID 20230919020806.534183-1-yanjun.zhu@intel.com (mailing list archive)
State Accepted
Headers show
Series [1/1] RDMA/rtrs: Fix the problem of variable not initialized fully | expand

Commit Message

Zhu Yanjun Sept. 19, 2023, 2:08 a.m. UTC
From: Zhu Yanjun <yanjun.zhu@linux.dev>

No functionality change. The variable which is not initialized fully
will introduce potential risks.

Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
---
 drivers/infiniband/ulp/rtrs/rtrs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Leon Romanovsky Sept. 19, 2023, 8:17 a.m. UTC | #1
On Tue, Sep 19, 2023 at 10:08:06AM +0800, Zhu Yanjun wrote:
> From: Zhu Yanjun <yanjun.zhu@linux.dev>
> 
> No functionality change. The variable which is not initialized fully
> will introduce potential risks.

Are you sure about not being initialized?

Thanks

> 
> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> ---
>  drivers/infiniband/ulp/rtrs/rtrs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
> index 3696f367ff51..d80edfffd2e4 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs.c
> +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
> @@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
>  static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
>  		     u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
>  {
> -	struct ib_qp_init_attr init_attr = {NULL};
> +	struct ib_qp_init_attr init_attr = {};
>  	struct rdma_cm_id *cm_id = con->cm_id;
>  	int ret;
>  
> -- 
> 2.40.1
>
Zhu Yanjun Sept. 19, 2023, 8:26 a.m. UTC | #2
在 2023/9/19 16:17, Leon Romanovsky 写道:
> On Tue, Sep 19, 2023 at 10:08:06AM +0800, Zhu Yanjun wrote:
>> From: Zhu Yanjun <yanjun.zhu@linux.dev>
>>
>> No functionality change. The variable which is not initialized fully
>> will introduce potential risks.
> Are you sure about not being initialized?

About this problem, I think we discussed it previously in RDMA maillist.

And at that time, IIRC, you shared a link with me. The link is as below.

https://www.ex-parrot.com/~chris/random/initialise.html

 From what we discussed and the above link, I think it is not 
initialized fully.


Zhu Yanjun

>
> Thanks
>
>> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>> ---
>>   drivers/infiniband/ulp/rtrs/rtrs.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
>> index 3696f367ff51..d80edfffd2e4 100644
>> --- a/drivers/infiniband/ulp/rtrs/rtrs.c
>> +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
>> @@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
>>   static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
>>   		     u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
>>   {
>> -	struct ib_qp_init_attr init_attr = {NULL};
>> +	struct ib_qp_init_attr init_attr = {};
>>   	struct rdma_cm_id *cm_id = con->cm_id;
>>   	int ret;
>>   
>> -- 
>> 2.40.1
>>
Leon Romanovsky Sept. 19, 2023, 9:30 a.m. UTC | #3
On Tue, Sep 19, 2023 at 04:26:54PM +0800, Zhu Yanjun wrote:
> 
> 在 2023/9/19 16:17, Leon Romanovsky 写道:
> > On Tue, Sep 19, 2023 at 10:08:06AM +0800, Zhu Yanjun wrote:
> > > From: Zhu Yanjun <yanjun.zhu@linux.dev>
> > > 
> > > No functionality change. The variable which is not initialized fully
> > > will introduce potential risks.
> > Are you sure about not being initialized?
> 
> About this problem, I think we discussed it previously in RDMA maillist.
> 
> And at that time, IIRC, you shared a link with me. The link is as below.
> 
> https://www.ex-parrot.com/~chris/random/initialise.html
> 
> From what we discussed and the above link, I think it is not initialized
> fully.

I remember that discussion and it was about slightly different thing:
{} vs {0} in Linux kernel.

However I don't think that I sent you that link.
Anyway, let's take this patch as it is harmless.

Thanks

> 
> 
> Zhu Yanjun
> 
> > 
> > Thanks
> > 
> > > Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> > > ---
> > >   drivers/infiniband/ulp/rtrs/rtrs.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
> > > index 3696f367ff51..d80edfffd2e4 100644
> > > --- a/drivers/infiniband/ulp/rtrs/rtrs.c
> > > +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
> > > @@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
> > >   static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
> > >   		     u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
> > >   {
> > > -	struct ib_qp_init_attr init_attr = {NULL};
> > > +	struct ib_qp_init_attr init_attr = {};
> > >   	struct rdma_cm_id *cm_id = con->cm_id;
> > >   	int ret;
> > > -- 
> > > 2.40.1
> > >
Leon Romanovsky Sept. 19, 2023, 9:30 a.m. UTC | #4
On Tue, 19 Sep 2023 10:08:06 +0800, Zhu Yanjun wrote:
> No functionality change. The variable which is not initialized fully
> will introduce potential risks.
> 
> 

Applied, thanks!

[1/1] RDMA/rtrs: Fix the problem of variable not initialized fully
      https://git.kernel.org/rdma/rdma/c/c5930a1aa08aaf

Best regards,
Zhijian Li (Fujitsu) Sept. 20, 2023, 2:16 a.m. UTC | #5
On 19/09/2023 17:30, Leon Romanovsky wrote:
> On Tue, Sep 19, 2023 at 04:26:54PM +0800, Zhu Yanjun wrote:
>>
>> 在 2023/9/19 16:17, Leon Romanovsky 写道:
>>> On Tue, Sep 19, 2023 at 10:08:06AM +0800, Zhu Yanjun wrote:
>>>> From: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>>
>>>> No functionality change. The variable which is not initialized fully
>>>> will introduce potential risks.
>>> Are you sure about not being initialized?
>>
>> About this problem, I think we discussed it previously in RDMA maillist.
>>
>> And at that time, IIRC, you shared a link with me. The link is as below.
>>
>> https://www.ex-parrot.com/~chris/random/initialise.html
>>
>>  From what we discussed and the above link, I think it is not initialized
>> fully.
> 
> I remember that discussion and it was about slightly different thing:
> {} vs {0} in Linux kernel.


Well, in my mind, I thought they are the same. see: https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Initializing-Structure-Members

In current kernel, {NULL/0} is used in so many other places. beside {NULL}, another partial initializing form
struct class {
	int a, b, c, d, e;
} instance = {
   .a = x,
   .b = y,
};

They are also used everywhere, it's definitely based on the truth instance.{c,d,e} to be "0".


Thanks



> 
> However I don't think that I sent you that link.
> Anyway, let's take this patch as it is harmless.
> 
> Thanks
> 
>>
>>
>> Zhu Yanjun
>>
>>>
>>> Thanks
>>>
>>>> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>> ---
>>>>    drivers/infiniband/ulp/rtrs/rtrs.c | 2 +-
>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
>>>> index 3696f367ff51..d80edfffd2e4 100644
>>>> --- a/drivers/infiniband/ulp/rtrs/rtrs.c
>>>> +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
>>>> @@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
>>>>    static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
>>>>    		     u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
>>>>    {
>>>> -	struct ib_qp_init_attr init_attr = {NULL};
>>>> +	struct ib_qp_init_attr init_attr = {};
>>>>    	struct rdma_cm_id *cm_id = con->cm_id;
>>>>    	int ret;
>>>> -- 
>>>> 2.40.1
>>>>
Jinpu Wang Sept. 20, 2023, 5:46 a.m. UTC | #6
On Wed, Sep 20, 2023 at 4:16 AM Zhijian Li (Fujitsu)
<lizhijian@fujitsu.com> wrote:
>
>
>
> On 19/09/2023 17:30, Leon Romanovsky wrote:
> > On Tue, Sep 19, 2023 at 04:26:54PM +0800, Zhu Yanjun wrote:
> >>
> >> 在 2023/9/19 16:17, Leon Romanovsky 写道:
> >>> On Tue, Sep 19, 2023 at 10:08:06AM +0800, Zhu Yanjun wrote:
> >>>> From: Zhu Yanjun <yanjun.zhu@linux.dev>
> >>>>
> >>>> No functionality change. The variable which is not initialized fully
> >>>> will introduce potential risks.
> >>> Are you sure about not being initialized?
> >>
> >> About this problem, I think we discussed it previously in RDMA maillist.
> >>
> >> And at that time, IIRC, you shared a link with me. The link is as below.
> >>
> >> https://www.ex-parrot.com/~chris/random/initialise.html
> >>
> >>  From what we discussed and the above link, I think it is not initialized
> >> fully.
> >
> > I remember that discussion and it was about slightly different thing:
> > {} vs {0} in Linux kernel.
>
>
> Well, in my mind, I thought they are the same. see: https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Initializing-Structure-Members
>
> In current kernel, {NULL/0} is used in so many other places. beside {NULL}, another partial initializing form
> struct class {
>         int a, b, c, d, e;
> } instance = {
>    .a = x,
>    .b = y,
> };
>
> They are also used everywhere, it's definitely based on the truth instance.{c,d,e} to be "0".
I also think they are the same. oth it is harmless.

Thx
>
>
> Thanks
>
>
>
> >
> > However I don't think that I sent you that link.
> > Anyway, let's take this patch as it is harmless.
> >
> > Thanks
> >
> >>
> >>
> >> Zhu Yanjun
> >>
> >>>
> >>> Thanks
> >>>
> >>>> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> >>>> ---
> >>>>    drivers/infiniband/ulp/rtrs/rtrs.c | 2 +-
> >>>>    1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
> >>>> index 3696f367ff51..d80edfffd2e4 100644
> >>>> --- a/drivers/infiniband/ulp/rtrs/rtrs.c
> >>>> +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
> >>>> @@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
> >>>>    static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
> >>>>                         u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
> >>>>    {
> >>>> -  struct ib_qp_init_attr init_attr = {NULL};
> >>>> +  struct ib_qp_init_attr init_attr = {};
> >>>>            struct rdma_cm_id *cm_id = con->cm_id;
> >>>>            int ret;
> >>>> --
> >>>> 2.40.1
> >>>>
Leon Romanovsky Sept. 20, 2023, 7:47 a.m. UTC | #7
On Wed, Sep 20, 2023 at 02:16:20AM +0000, Zhijian Li (Fujitsu) wrote:
> 
> 
> On 19/09/2023 17:30, Leon Romanovsky wrote:
> > On Tue, Sep 19, 2023 at 04:26:54PM +0800, Zhu Yanjun wrote:
> >>
> >> 在 2023/9/19 16:17, Leon Romanovsky 写道:
> >>> On Tue, Sep 19, 2023 at 10:08:06AM +0800, Zhu Yanjun wrote:
> >>>> From: Zhu Yanjun <yanjun.zhu@linux.dev>
> >>>>
> >>>> No functionality change. The variable which is not initialized fully
> >>>> will introduce potential risks.
> >>> Are you sure about not being initialized?
> >>
> >> About this problem, I think we discussed it previously in RDMA maillist.
> >>
> >> And at that time, IIRC, you shared a link with me. The link is as below.
> >>
> >> https://www.ex-parrot.com/~chris/random/initialise.html
> >>
> >>  From what we discussed and the above link, I think it is not initialized
> >> fully.
> > 
> > I remember that discussion and it was about slightly different thing:
> > {} vs {0} in Linux kernel.
> 
> 
> Well, in my mind, I thought they are the same. see: https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Initializing-Structure-Members

It is GCC specific implementation, the original discussion was about C-standard.

Thanks
Jason Gunthorpe Sept. 20, 2023, 3:34 p.m. UTC | #8
On Wed, Sep 20, 2023 at 10:47:53AM +0300, Leon Romanovsky wrote:

> > >> About this problem, I think we discussed it previously in RDMA maillist.
> > >>
> > >> And at that time, IIRC, you shared a link with me. The link is as below.
> > >>
> > >> https://www.ex-parrot.com/~chris/random/initialise.html
> > >>
> > >>  From what we discussed and the above link, I think it is not initialized
> > >> fully.
> > > 
> > > I remember that discussion and it was about slightly different thing:
> > > {} vs {0} in Linux kernel.
> > 
> > 
> > Well, in my mind, I thought they are the same. see: https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Initializing-Structure-Members
> 
> It is GCC specific implementation, the original discussion was about C-standard.

Yes, the C standard says they are different constructs and
pedantically only {} is required to fully zero the struct, padding and
all.

{0} says 'zero initialize the first member of the struct', it is a
terrible construct because the first member may not be an integer,
don't use it.

Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
index 3696f367ff51..d80edfffd2e4 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs.c
@@ -255,7 +255,7 @@  static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
 static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
 		     u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
 {
-	struct ib_qp_init_attr init_attr = {NULL};
+	struct ib_qp_init_attr init_attr = {};
 	struct rdma_cm_id *cm_id = con->cm_id;
 	int ret;