From: Christian Borntraeger <borntraeger@xxxxxxxxxx> Sent: Tuesday, July 24, 2018 4:54 PM > On 07/24/2018 10:45 AM, Huaisheng Ye wrote: > > From: Huaisheng Ye <yehs1@xxxxxxxxxx> > > > > dcssblk_direct_access() needs to check the validity of second rank > > pointer kaddr for NULL assignment. If kaddr equals to NULL, it > > doesn't need to calculate the value. > > > > Signed-off-by: Huaisheng Ye <yehs1@xxxxxxxxxx> > > --- > > drivers/s390/block/dcssblk.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c > > index 0a312e4..9c13dc5 100644 > > --- a/drivers/s390/block/dcssblk.c > > +++ b/drivers/s390/block/dcssblk.c > > @@ -915,7 +915,8 @@ 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; > > + if (kaddr) > > + *kaddr = (void *) dev_info->start + offset; > > So you are trading of a load + add (dev_info->start should be cache hot) against a > compare+branch . Not sure that this is always a win. Hmm...the calculation process of pfn is more complicated than kaddr. I think you agree to check pfn but not sure kaddr, right? >From the logical consistency of code, I think it shall be better to give pfn and kaddr similar treatment. Cheers, Huaisheng Ye ��.n��������+%������w��{.n�����{��������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f