On Thu, Jun 17, 2021 at 10:09:26PM +0800, Baokun Li wrote: > > Using list_splice_init() instead of entire while-loops > in atomisp_compat_css20.c. Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Reported-by: Hulk Robot <hulkci@xxxxxxxxxx> > Signed-off-by: Baokun Li <libaokun1@xxxxxxxxxx> > --- > V1->V2: > CC mailist > V2->V3: > Using list_move_tail() -> Using list_splice_init() > V3->V4: > Remove redundant 'asd->' > V4->V5: > Add the version information for 'V3->V4:' > V5->V6: > Remove unused variable 'md_buf','dis_buf','s3a_buf' > > .../media/atomisp/pci/atomisp_compat_css20.c | 38 +++---------------- > 1 file changed, 5 insertions(+), 33 deletions(-) > > diff --git a/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c b/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c > index f60198bb8a1a..99a632f33d2d 100644 > --- a/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c > +++ b/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c > @@ -2102,9 +2102,6 @@ void atomisp_css_stop(struct atomisp_sub_device *asd, > enum ia_css_pipe_id pipe_id, bool in_reset) > { > struct atomisp_device *isp = asd->isp; > - struct atomisp_s3a_buf *s3a_buf; > - struct atomisp_dis_buf *dis_buf; > - struct atomisp_metadata_buf *md_buf; > unsigned long irqflags; > unsigned int i; > > @@ -2144,42 +2141,17 @@ void atomisp_css_stop(struct atomisp_sub_device *asd, > } > > /* move stats buffers to free queue list */ > - while (!list_empty(&asd->s3a_stats_in_css)) { > - s3a_buf = list_entry(asd->s3a_stats_in_css.next, > - struct atomisp_s3a_buf, list); > - list_del(&s3a_buf->list); > - list_add_tail(&s3a_buf->list, &asd->s3a_stats); > - } > - while (!list_empty(&asd->s3a_stats_ready)) { > - s3a_buf = list_entry(asd->s3a_stats_ready.next, > - struct atomisp_s3a_buf, list); > - list_del(&s3a_buf->list); > - list_add_tail(&s3a_buf->list, &asd->s3a_stats); > - } > + list_splice_init(&asd->s3a_stats_in_css, &asd->s3a_stats); > + list_splice_init(&asd->s3a_stats_ready, &asd->s3a_stats); > > spin_lock_irqsave(&asd->dis_stats_lock, irqflags); > - while (!list_empty(&asd->dis_stats_in_css)) { > - dis_buf = list_entry(asd->dis_stats_in_css.next, > - struct atomisp_dis_buf, list); > - list_del(&dis_buf->list); > - list_add_tail(&dis_buf->list, &asd->dis_stats); > - } > + list_splice_init(&asd->dis_stats_in_css, &asd->dis_stats); > asd->params.dis_proj_data_valid = false; > spin_unlock_irqrestore(&asd->dis_stats_lock, irqflags); > > for (i = 0; i < ATOMISP_METADATA_TYPE_NUM; i++) { > - while (!list_empty(&asd->metadata_in_css[i])) { > - md_buf = list_entry(asd->metadata_in_css[i].next, > - struct atomisp_metadata_buf, list); > - list_del(&md_buf->list); > - list_add_tail(&md_buf->list, &asd->metadata[i]); > - } > - while (!list_empty(&asd->metadata_ready[i])) { > - md_buf = list_entry(asd->metadata_ready[i].next, > - struct atomisp_metadata_buf, list); > - list_del(&md_buf->list); > - list_add_tail(&md_buf->list, &asd->metadata[i]); > - } > + list_splice_init(&asd->metadata_in_css[i], &asd->metadata[i]); > + list_splice_init(&asd->metadata_ready[i], &asd->metadata[i]); > } > > atomisp_flush_params_queue(&asd->video_out_capture); > -- > 2.31.1 > -- With Best Regards, Andy Shevchenko