From: Mike Snitzer <snitzer@kernel.org>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: msakai@redhat.com, dm-devel@lists.linux.dev
Subject: Re: [bug report] dm vdo: implement the chapter volume store
Date: Sun, 11 Feb 2024 15:00:08 -0500 [thread overview]
Message-ID: <ZcknSBGUKMi5RxE1@redhat.com> (raw)
In-Reply-To: <3673d6ff-920a-4e20-b155-3a18b143ad95@moroto.mountain>
On Fri, Feb 09 2024 at 8:06P -0500,
Dan Carpenter <dan.carpenter@linaro.org> wrote:
> Hello Matthew Sakai,
>
> The patch e08b7fe0c6fa: "dm vdo: implement the chapter volume store"
> from Nov 16, 2023 (linux-next), leads to the following Smatch static
> checker warning:
>
> drivers/md/dm-vdo/volume.c:597 process_entry() warn: inconsistent returns '&volume->read_threads_mutex'.
> Locked on : 552,580,588,597
> Unlocked on: 565
>
> drivers/md/dm-vdo/volume.c
> 542 static int process_entry(struct volume *volume, struct queued_read *entry)
> 543 {
> 544 u32 page_number = entry->physical_page;
> 545 struct uds_request *request;
> 546 struct cached_page *page = NULL;
> 547 u8 *page_data;
> 548 int result;
> 549
> 550 if (entry->invalid) {
> 551 uds_log_debug("Requeuing requests for invalid page");
> 552 return UDS_SUCCESS;
> 553 }
> 554
> 555 page = select_victim_in_cache(&volume->page_cache);
> 556
> 557 uds_unlock_mutex(&volume->read_threads_mutex);
> 558 page_data = dm_bufio_read(volume->client, page_number, &page->buffer);
> 559 if (IS_ERR(page_data)) {
> 560 result = -PTR_ERR(page_data);
> 561 uds_log_warning_strerror(result,
> 562 "error reading physical page %u from volume",
> 563 page_number);
> 564 cancel_page_in_cache(&volume->page_cache, page_number, page);
> 565 return result;
>
> This is the only return where we aren't holding
> uds_lock_mutex(&volume->read_threads_mutex). It looks like this
> will lead to a double unlock in the caller.
I've fixed this and added your Reported-by
Thanks,
Mike
>
> 566 }
> 567 uds_lock_mutex(&volume->read_threads_mutex);
> 568
> 569 if (entry->invalid) {
> 570 uds_log_warning("Page %u invalidated after read", page_number);
> 571 cancel_page_in_cache(&volume->page_cache, page_number, page);
> 572 return UDS_SUCCESS;
> 573 }
> 574
> 575 if (!is_record_page(volume->geometry, page_number)) {
> 576 result = initialize_index_page(volume, page_number, page);
> 577 if (result != UDS_SUCCESS) {
> 578 uds_log_warning("Error initializing chapter index page");
> 579 cancel_page_in_cache(&volume->page_cache, page_number, page);
> 580 return result;
> 581 }
> 582 }
> 583
> 584 result = put_page_in_cache(&volume->page_cache, page_number, page);
> 585 if (result != UDS_SUCCESS) {
> 586 uds_log_warning("Error putting page %u in cache", page_number);
> 587 cancel_page_in_cache(&volume->page_cache, page_number, page);
> 588 return result;
> 589 }
> 590
> 591 request = entry->first_request;
> 592 while ((request != NULL) && (result == UDS_SUCCESS)) {
> 593 result = search_page(page, volume, request, page_number);
> 594 request = request->next_request;
> 595 }
> 596
> --> 597 return result;
> 598 }
>
> regards,
> dan carpenter
>
prev parent reply other threads:[~2024-02-11 20:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-09 13:06 [bug report] dm vdo: implement the chapter volume store Dan Carpenter
2024-02-11 20:00 ` Mike Snitzer [this message]
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=ZcknSBGUKMi5RxE1@redhat.com \
--to=snitzer@kernel.org \
--cc=dan.carpenter@linaro.org \
--cc=dm-devel@lists.linux.dev \
--cc=msakai@redhat.com \
/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.