diff mbox series

drivers/scsi/fnic/fnic_trace.c: Use vzalloc

Message ID 5beae8ff.1c69fb81.bd59a.b7fa@mx.google.com (mailing list archive)
State Deferred
Headers show
Series drivers/scsi/fnic/fnic_trace.c: Use vzalloc | expand

Commit Message

Sabyasachi Gupta Nov. 13, 2018, 3:08 p.m. UTC
Replaced vmalloc + memset with vzalloc

Signed-off-by: Sabyasachi Gupta <sabyasachi.linux@gmail.com>
---
 drivers/scsi/fnic/fnic_trace.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

John Garry Nov. 13, 2018, 3:44 p.m. UTC | #1
On 13/11/2018 15:08, Sabyasachi Gupta wrote:
> Replaced vmalloc + memset with vzalloc
>
> Signed-off-by: Sabyasachi Gupta <sabyasachi.linux@gmail.com>
> ---
>  drivers/scsi/fnic/fnic_trace.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/fnic/fnic_trace.c b/drivers/scsi/fnic/fnic_trace.c
> index 8271785..129ab27 100644
> --- a/drivers/scsi/fnic/fnic_trace.c
> +++ b/drivers/scsi/fnic/fnic_trace.c
> @@ -468,14 +468,14 @@ int fnic_trace_buf_init(void)
>  	fnic_max_trace_entries = (trace_max_pages * PAGE_SIZE)/
>  					  FNIC_ENTRY_SIZE_BYTES;
>
> -	fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages * PAGE_SIZE));
> +	fnic_trace_buf_p = (unsigned long)vzalloc((trace_max_pages *
> +								PAGE_SIZE));

If you remove the extra brackets in vzalloc() argument then you may not 
spill onto the next line.

>  	if (!fnic_trace_buf_p) {
>  		printk(KERN_ERR PFX "Failed to allocate memory "
>  				  "for fnic_trace_buf_p\n");
>  		err = -ENOMEM;
>  		goto err_fnic_trace_buf_init;
>  	}
> -	memset((void *)fnic_trace_buf_p, 0, (trace_max_pages * PAGE_SIZE));
>
>  	fnic_trace_entries.page_offset =
>  		vmalloc(array_size(fnic_max_trace_entries,
>
Johannes Thumshirn Nov. 13, 2018, 3:53 p.m. UTC | #2
On 13/11/2018 16:44, John Garry wrote:
> On 13/11/2018 15:08, Sabyasachi Gupta wrote:
>> Replaced vmalloc + memset with vzalloc
>>
>> Signed-off-by: Sabyasachi Gupta <sabyasachi.linux@gmail.com>
>> ---
>>  drivers/scsi/fnic/fnic_trace.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/scsi/fnic/fnic_trace.c
>> b/drivers/scsi/fnic/fnic_trace.c
>> index 8271785..129ab27 100644
>> --- a/drivers/scsi/fnic/fnic_trace.c
>> +++ b/drivers/scsi/fnic/fnic_trace.c
>> @@ -468,14 +468,14 @@ int fnic_trace_buf_init(void)
>>      fnic_max_trace_entries = (trace_max_pages * PAGE_SIZE)/
>>                        FNIC_ENTRY_SIZE_BYTES;
>>
>> -    fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages *
>> PAGE_SIZE));
>> +    fnic_trace_buf_p = (unsigned long)vzalloc((trace_max_pages *
>> +                                PAGE_SIZE));
> 
> If you remove the extra brackets in vzalloc() argument then you may not
> spill onto the next line.

And remove the unnecessary cast. vzalloc() (just like vmalloc()) returns
a void*, so no reason to cast it.
Sabyasachi Gupta Nov. 13, 2018, 4:04 p.m. UTC | #3
On Tue, Nov 13, 2018 at 9:23 PM Johannes Thumshirn <jthumshirn@suse.de> wrote:
>
> On 13/11/2018 16:44, John Garry wrote:
> > On 13/11/2018 15:08, Sabyasachi Gupta wrote:
> >> Replaced vmalloc + memset with vzalloc
> >>
> >> Signed-off-by: Sabyasachi Gupta <sabyasachi.linux@gmail.com>
> >> ---
> >>  drivers/scsi/fnic/fnic_trace.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/scsi/fnic/fnic_trace.c
> >> b/drivers/scsi/fnic/fnic_trace.c
> >> index 8271785..129ab27 100644
> >> --- a/drivers/scsi/fnic/fnic_trace.c
> >> +++ b/drivers/scsi/fnic/fnic_trace.c
> >> @@ -468,14 +468,14 @@ int fnic_trace_buf_init(void)
> >>      fnic_max_trace_entries = (trace_max_pages * PAGE_SIZE)/
> >>                        FNIC_ENTRY_SIZE_BYTES;
> >>
> >> -    fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages *
> >> PAGE_SIZE));
> >> +    fnic_trace_buf_p = (unsigned long)vzalloc((trace_max_pages *
> >> +                                PAGE_SIZE));
> >
> > If you remove the extra brackets in vzalloc() argument then you may not
> > spill onto the next line.
>
> And remove the unnecessary cast. vzalloc() (just like vmalloc()) returns
> a void*, so no reason to cast it.
>
> --
> Johannes Thumshirn                                        SUSE Labs
> jthumshirn@suse.de                                +49 911 74053 689
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: Felix Imendörffer, Jane Smithard, Graham Norton
> HRB 21284 (AG Nürnberg)
> Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
 I will remove it and send v2
James Bottomley Nov. 13, 2018, 4:11 p.m. UTC | #4
On Tue, 2018-11-13 at 16:53 +0100, Johannes Thumshirn wrote:
> On 13/11/2018 16:44, John Garry wrote:
> > On 13/11/2018 15:08, Sabyasachi Gupta wrote:
[...]
> > > -    fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages *
> > > PAGE_SIZE));
> > > +    fnic_trace_buf_p = (unsigned long)vzalloc((trace_max_pages *
> > > +                                PAGE_SIZE));
> > 
> > If you remove the extra brackets in vzalloc() argument then you may
> > not spill onto the next line.
> 
> And remove the unnecessary cast. vzalloc() (just like vmalloc())
> returns a void*, so no reason to cast it.

This is incorrect advice: there's no need to cast it to other *pointer*
types, but if you cast it to a non-pointer type (which this is doing)
the compiler will complain if there is no explicit cast.

James
Johannes Thumshirn Nov. 13, 2018, 4:16 p.m. UTC | #5
On 13/11/2018 17:11, James Bottomley wrote:
> This is incorrect advice: there's no need to cast it to other *pointer*
> types, but if you cast it to a non-pointer type (which this is doing)
> the compiler will complain if there is no explicit cast.

Right, sorry for that and thanks for spotting it James.

Byte,
	Johannes
Sabyasachi Gupta Nov. 13, 2018, 4:22 p.m. UTC | #6
On Tue, Nov 13, 2018 at 9:46 PM Johannes Thumshirn <jthumshirn@suse.de> wrote:
>
> On 13/11/2018 17:11, James Bottomley wrote:
> > This is incorrect advice: there's no need to cast it to other *pointer*
> > types, but if you cast it to a non-pointer type (which this is doing)
> > the compiler will complain if there is no explicit cast.
shall I leave the typecast as it is?
> Right, sorry for that and thanks for spotting it James.
>
> Byte,
>         Johannes
> --
> Johannes Thumshirn                                        SUSE Labs
> jthumshirn@suse.de                                +49 911 74053 689
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: Felix Imendörffer, Jane Smithard, Graham Norton
> HRB 21284 (AG Nürnberg)
> Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
Johannes Thumshirn Nov. 13, 2018, 4:25 p.m. UTC | #7
On 13/11/2018 17:22, Sabyasachi Gupta wrote:
> On Tue, Nov 13, 2018 at 9:46 PM Johannes Thumshirn <jthumshirn@suse.de> wrote:
>>
>> On 13/11/2018 17:11, James Bottomley wrote:
>>> This is incorrect advice: there's no need to cast it to other *pointer*
>>> types, but if you cast it to a non-pointer type (which this is doing)
>>> the compiler will complain if there is no explicit cast.
> shall I leave the typecast as it is?

Yes, sorry for not looking at it deeply enough.
David Laight Nov. 14, 2018, 10:44 a.m. UTC | #8
From: James Bottomley
> Sent: 13 November 2018 16:11
> 
> On Tue, 2018-11-13 at 16:53 +0100, Johannes Thumshirn wrote:
> > On 13/11/2018 16:44, John Garry wrote:
> > > On 13/11/2018 15:08, Sabyasachi Gupta wrote:
> [...]
> > > > -    fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages *
> > > > PAGE_SIZE));
> > > > +    fnic_trace_buf_p = (unsigned long)vzalloc((trace_max_pages *
> > > > +                                PAGE_SIZE));
> > >
> > > If you remove the extra brackets in vzalloc() argument then you may
> > > not spill onto the next line.
> >
> > And remove the unnecessary cast. vzalloc() (just like vmalloc())
> > returns a void*, so no reason to cast it.
> 
> This is incorrect advice: there's no need to cast it to other *pointer*
> types, but if you cast it to a non-pointer type (which this is doing)
> the compiler will complain if there is no explicit cast.

The real question is why is this code using 'unsigned long'
to hold pointers?

Never mind why it is allocating a large memory block then setting
up another array with pointers to every 64 bytes down it.

Also why default to 16 * PAGE_SIZE - that is silly if pages are big.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
diff mbox series

Patch

diff --git a/drivers/scsi/fnic/fnic_trace.c b/drivers/scsi/fnic/fnic_trace.c
index 8271785..129ab27 100644
--- a/drivers/scsi/fnic/fnic_trace.c
+++ b/drivers/scsi/fnic/fnic_trace.c
@@ -468,14 +468,14 @@  int fnic_trace_buf_init(void)
 	fnic_max_trace_entries = (trace_max_pages * PAGE_SIZE)/
 					  FNIC_ENTRY_SIZE_BYTES;
 
-	fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages * PAGE_SIZE));
+	fnic_trace_buf_p = (unsigned long)vzalloc((trace_max_pages *
+								PAGE_SIZE));
 	if (!fnic_trace_buf_p) {
 		printk(KERN_ERR PFX "Failed to allocate memory "
 				  "for fnic_trace_buf_p\n");
 		err = -ENOMEM;
 		goto err_fnic_trace_buf_init;
 	}
-	memset((void *)fnic_trace_buf_p, 0, (trace_max_pages * PAGE_SIZE));
 
 	fnic_trace_entries.page_offset =
 		vmalloc(array_size(fnic_max_trace_entries,