All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: hch@lst.de
Cc: linux-fsdevel@vger.kernel.org
Subject: [bug report] fsdax: decouple zeroing from the iomap buffered I/O code
Date: Wed, 8 Dec 2021 10:11:58 +0300	[thread overview]
Message-ID: <20211208071158.GA21674@kili> (raw)

Hello Christoph Hellwig,

The patch c6f40468657d: "fsdax: decouple zeroing from the iomap
buffered I/O code" from Nov 29, 2021, leads to the following Smatch
static checker warning:

	fs/iomap/buffered-io.c:904 iomap_zero_iter()
	warn: unsigned 'bytes' is never less than zero.

fs/iomap/buffered-io.c
    879 static loff_t iomap_zero_iter(struct iomap_iter *iter, bool *did_zero)
    880 {
    881         const struct iomap *srcmap = iomap_iter_srcmap(iter);
    882         loff_t pos = iter->pos;
    883         loff_t length = iomap_length(iter);
    884         loff_t written = 0;
    885 
    886         /* already zeroed?  we're done. */
    887         if (srcmap->type == IOMAP_HOLE || srcmap->type == IOMAP_UNWRITTEN)
    888                 return length;
    889 
    890         do {
    891                 unsigned offset = offset_in_page(pos);
    892                 size_t bytes = min_t(u64, PAGE_SIZE - offset, length);
    893                 struct page *page;
    894                 int status;
    895 
    896                 status = iomap_write_begin(iter, pos, bytes, &page);
    897                 if (status)
    898                         return status;
    899 
    900                 zero_user(page, offset, bytes);
    901                 mark_page_accessed(page);
    902 
    903                 bytes = iomap_write_end(iter, pos, bytes, bytes, page);
--> 904                 if (bytes < 0)

bytes is unsigned and iomap_write_end() doesn't return negatives.

    905                         return bytes;
    906 
    907                 pos += bytes;
    908                 length -= bytes;
    909                 written += bytes;
    910                 if (did_zero)
    911                         *did_zero = true;
    912         } while (length > 0);
    913 
    914         return written;
    915 }

regards,
dan carpenter

                 reply	other threads:[~2021-12-08  7:12 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211208071158.GA21674@kili \
    --to=dan.carpenter@oracle.com \
    --cc=hch@lst.de \
    --cc=linux-fsdevel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.