On Wed, 23 Jun 2021 at 12:17, Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > Infinite loops are hard to read and understand because of > hidden main loop condition. Simplify such one in mmc_spi_skip(). > > Using schedule() to schedule (and be friendly to others) > is discouraged and cond_resched() should be used instead. > Hence, replace schedule() with cond_resched() at the same > time. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/mmc/host/mmc_spi.c | 15 ++++----------- > 1 file changed, 4 insertions(+), 11 deletions(-) > > diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c > index 65c65bb5737f..a1bcde3395a6 100644 > --- a/drivers/mmc/host/mmc_spi.c > +++ b/drivers/mmc/host/mmc_spi.c > @@ -180,7 +180,7 @@ static int mmc_spi_skip(struct mmc_spi_host *host, unsigned long timeout, > u8 *cp = host->data->status; > unsigned long start = jiffies; > > - while (1) { > + do { > int status; > unsigned i; > > @@ -193,16 +193,9 @@ static int mmc_spi_skip(struct mmc_spi_host *host, unsigned long timeout, > return cp[i]; > } > > - if (time_is_before_jiffies(start + timeout)) > - break; > - > - /* If we need long timeouts, we may release the CPU. > - * We use jiffies here because we want to have a relation > - * between elapsed time and the blocking of the scheduler. > - */ > - if (time_is_before_jiffies(start + 1)) > - schedule(); > - } > + /* If we need long timeouts, we may release the CPU */ > + cond_resched(); > + } while (time_is_after_jiffies(start + timeout)); This certainly is an improvement. Although, what do you think of moving to readx_poll_timeout(), that should allow even a better cleanup, don't you think? > return -ETIMEDOUT; > } > Kind regards Uffe