Xiubo,
On Tue, 2017-07-11 at 17:04 +0800, Xiubo Li wrote:
> > > > > diff --git a/drivers/target/target_core_user.c
> > > > > b/drivers/target/target_core_user.c
> > > > > index 930800c..86a845a 100644
> > > > > --- a/drivers/target/target_core_user.c
> > > > > +++ b/drivers/target/target_core_user.c
> > > > > @@ -437,7 +437,7 @@ static int scatter_data_area(struct tcmu_dev
> > > > > *udev,
> > > > > to_offset = get_block_offset_user(udev,
> > > > > dbi,
> > > > > block_remaining);
> > > > > offset = DATA_BLOCK_SIZE -
> > > > > block_remaining;
> > > > > - to = (void *)(unsigned long)to + offset;
> > > > > + to = (void *)((unsigned long)to + offset);
> > > > >
> > > > > if (*iov_cnt != 0 &&
> > > > > to_offset == iov_tail(udev, *iov)) {
> > > > > @@ -510,7 +510,7 @@ static void gather_data_area(struct tcmu_dev
> > > > > *udev, struct tcmu_cmd *cmd,
> > > > > copy_bytes = min_t(size_t, sg_remaining,
> > > > > block_remaining);
> > > > > offset = DATA_BLOCK_SIZE -
> > > > > block_remaining;
> > > > > - from = (void *)(unsigned long)from +
> > > > > offset;
> > > > > + from = (void *)((unsigned long)from +
> > > > > offset);
> > > > > tcmu_flush_dcache_range(from,
> > > > > copy_bytes);
> > > > > memcpy(to + sg->length - sg_remaining,
> > > > > from,
> > > > > copy_bytes);
> >
> > I was just looking at this patch and about to try to see if it fixes my
> > problem... It cannot hurt. Trying...
>
> Hi Damien,
>
> Please test another patch, I think that one maybe fix this.
void * pointer arithmetic is OK and equivalent to unsigned long. So I do not
think this actually fixes anything and could be rewritten more simply as
to += offset;
and
from += offset.
And that compiles without a warning and there are no complaints from sparse.
Cheers.
--
Damien Le Moal
Western Digital