diff mbox series

[v2,2/6] s390, dcssblk: kaddr and pfn can be NULL to ->direct_access()

Message ID 20180725162849.8320-3-yehs2007@zoho.com (mailing list archive)
State New, archived
Headers show
Series kaddr and pfn can be NULL to ->direct_access() | expand

Commit Message

Huaisheng Ye July 25, 2018, 4:28 p.m. UTC
From: Huaisheng Ye <yehs1@lenovo.com>

dcssblk_direct_access() needs to check the validity of pointers kaddr
and pfn for NULL assignment. If anyone equals to NULL, it doesn't need
to calculate the value.

If either of them is equal to NULL, that is to say callers may
have no need for kaddr or pfn, so this patch is prepared for allowing
them to pass in NULL instead of having to pass in a pointer or local
variable that they then just throw away.

Signed-off-by: Huaisheng Ye <yehs1@lenovo.com>
---
 drivers/s390/block/dcssblk.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Huaisheng HS1 Ye July 28, 2018, 4:07 a.m. UTC | #1
Dear Maintainers of Linux-s390,

Greetings.

May I have your ack's for this patch? The whole series would be applied
to libnvdimm if it could get your approval.
And any suggestion is welcome.

Cheers,
Huaisheng Ye

> From: Huaisheng Ye <yehs2007@zoho.com>
> Sent: Thursday, July 26, 2018 12:29 AM
> 
> From: Huaisheng Ye <yehs1@lenovo.com>
> 
> dcssblk_direct_access() needs to check the validity of pointers kaddr
> and pfn for NULL assignment. If anyone equals to NULL, it doesn't need
> to calculate the value.
> 
> If either of them is equal to NULL, that is to say callers may
> have no need for kaddr or pfn, so this patch is prepared for allowing
> them to pass in NULL instead of having to pass in a pointer or local
> variable that they then just throw away.
> 
> Signed-off-by: Huaisheng Ye <yehs1@lenovo.com>
> ---
>  drivers/s390/block/dcssblk.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c
> index ed60728..23e526c 100644
> --- a/drivers/s390/block/dcssblk.c
> +++ b/drivers/s390/block/dcssblk.c
> @@ -922,9 +922,11 @@ static DEVICE_ATTR(save, S_IWUSR | S_IRUSR, dcssblk_save_show,
>  	unsigned long dev_sz;
> 
>  	dev_sz = dev_info->end - dev_info->start + 1;
> -	*kaddr = (void *) dev_info->start + offset;
> -	*pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset),
> -			PFN_DEV|PFN_SPECIAL);
> +	if (kaddr)
> +		*kaddr = (void *) dev_info->start + offset;
> +	if (pfn)
> +		*pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset),
> +				PFN_DEV|PFN_SPECIAL);
> 
>  	return (dev_sz - offset) / PAGE_SIZE;
>  }
> --
> 1.8.3.1
Martin Schwidefsky July 30, 2018, 5:14 a.m. UTC | #2
On Sat, 28 Jul 2018 04:07:25 +0000
Huaisheng HS1 Ye <yehs1@lenovo.com> wrote:

> May I have your ack's for this patch? The whole series would be applied
> to libnvdimm if it could get your approval.
> And any suggestion is welcome.

Sure, it is just two additional ifs. I did not think that this needed an
ack, but here you go:

Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

> 
> Cheers,
> Huaisheng Ye
> 
> > From: Huaisheng Ye <yehs2007@zoho.com>
> > Sent: Thursday, July 26, 2018 12:29 AM
> > 
> > From: Huaisheng Ye <yehs1@lenovo.com>
> > 
> > dcssblk_direct_access() needs to check the validity of pointers kaddr
> > and pfn for NULL assignment. If anyone equals to NULL, it doesn't need
> > to calculate the value.
> > 
> > If either of them is equal to NULL, that is to say callers may
> > have no need for kaddr or pfn, so this patch is prepared for allowing
> > them to pass in NULL instead of having to pass in a pointer or local
> > variable that they then just throw away.
> > 
> > Signed-off-by: Huaisheng Ye <yehs1@lenovo.com>
> > ---
> >  drivers/s390/block/dcssblk.c | 8 +++++---
> >  1 file changed, 5 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c
> > index ed60728..23e526c 100644
> > --- a/drivers/s390/block/dcssblk.c
> > +++ b/drivers/s390/block/dcssblk.c
> > @@ -922,9 +922,11 @@ static DEVICE_ATTR(save, S_IWUSR | S_IRUSR, dcssblk_save_show,
> >  	unsigned long dev_sz;
> > 
> >  	dev_sz = dev_info->end - dev_info->start + 1;
> > -	*kaddr = (void *) dev_info->start + offset;
> > -	*pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset),
> > -			PFN_DEV|PFN_SPECIAL);
> > +	if (kaddr)
> > +		*kaddr = (void *) dev_info->start + offset;
> > +	if (pfn)
> > +		*pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset),
> > +				PFN_DEV|PFN_SPECIAL);
> > 
> >  	return (dev_sz - offset) / PAGE_SIZE;
> >  }
> > --
> > 1.8.3.1  
>
diff mbox series

Patch

diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c
index ed60728..23e526c 100644
--- a/drivers/s390/block/dcssblk.c
+++ b/drivers/s390/block/dcssblk.c
@@ -922,9 +922,11 @@  static DEVICE_ATTR(save, S_IWUSR | S_IRUSR, dcssblk_save_show,
 	unsigned long dev_sz;
 
 	dev_sz = dev_info->end - dev_info->start + 1;
-	*kaddr = (void *) dev_info->start + offset;
-	*pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset),
-			PFN_DEV|PFN_SPECIAL);
+	if (kaddr)
+		*kaddr = (void *) dev_info->start + offset;
+	if (pfn)
+		*pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset),
+				PFN_DEV|PFN_SPECIAL);
 
 	return (dev_sz - offset) / PAGE_SIZE;
 }