From: Dan Carpenter <error27@gmail.com>
To: jiasheng@iscas.ac.cn
Cc: linux-mmc@vger.kernel.org
Subject: [bug report] memstick/ms_block: Add check for alloc_ordered_workqueue
Date: Fri, 25 Nov 2022 11:01:52 +0300 [thread overview]
Message-ID: <Y4B2cIhw6DVSkvKD@kili> (raw)
Hello Jiasheng Jiang,
The patch cb713d1f69ae: "memstick/ms_block: Add check for
alloc_ordered_workqueue" from Nov 22, 2022, leads to the following
Smatch static checker warnings:
drivers/memstick/core/ms_block.c:2143 msb_init_disk()
warn: 'msb->io_queue' from alloc_workqueue() not released on lines: 2143.
drivers/memstick/core/ms_block.c:2120 msb_init_disk()
warn: missing error code here? 'alloc_workqueue()' failed. 'rc' = '0'
drivers/memstick/core/ms_block.c
2078 static int msb_init_disk(struct memstick_dev *card)
2079 {
2080 struct msb_data *msb = memstick_get_drvdata(card);
2081 int rc;
2082 unsigned long capacity;
2083
2084 mutex_lock(&msb_disk_lock);
2085 msb->disk_id = idr_alloc(&msb_disk_idr, card, 0, 256, GFP_KERNEL);
2086 mutex_unlock(&msb_disk_lock);
2087
2088 if (msb->disk_id < 0)
2089 return msb->disk_id;
2090
2091 rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &msb_mq_ops, 2,
2092 BLK_MQ_F_SHOULD_MERGE);
2093 if (rc)
2094 goto out_release_id;
2095
2096 msb->disk = blk_mq_alloc_disk(&msb->tag_set, card);
2097 if (IS_ERR(msb->disk)) {
2098 rc = PTR_ERR(msb->disk);
2099 goto out_free_tag_set;
2100 }
2101 msb->queue = msb->disk->queue;
2102
2103 blk_queue_max_hw_sectors(msb->queue, MS_BLOCK_MAX_PAGES);
2104 blk_queue_max_segments(msb->queue, MS_BLOCK_MAX_SEGS);
2105 blk_queue_max_segment_size(msb->queue,
2106 MS_BLOCK_MAX_PAGES * msb->page_size);
2107 blk_queue_logical_block_size(msb->queue, msb->page_size);
2108
2109 sprintf(msb->disk->disk_name, "msblk%d", msb->disk_id);
2110 msb->disk->fops = &msb_bdops;
2111 msb->disk->private_data = msb;
2112
2113 capacity = msb->pages_in_block * msb->logical_block_count;
2114 capacity *= (msb->page_size / 512);
2115 set_capacity(msb->disk, capacity);
2116 dbg("Set total disk size to %lu sectors", capacity);
2117
2118 msb->io_queue = alloc_ordered_workqueue("ms_block", WQ_MEM_RECLAIM);
2119 if (!msb->io_queue)
--> 2120 goto out_cleanup_disk;
Set error code. Also this ->io_queue doesn't seem to be freed when we
unload the driver.
2121
2122 INIT_WORK(&msb->io_work, msb_io_work);
2123 sg_init_table(msb->prealloc_sg, MS_BLOCK_MAX_SEGS+1);
2124
2125 if (msb->read_only)
2126 set_disk_ro(msb->disk, 1);
2127
2128 msb_start(card);
2129 rc = device_add_disk(&card->dev, msb->disk, NULL);
2130 if (rc)
2131 goto out_cleanup_disk;
Needs to free msb->io_queue.
2132 dbg("Disk added");
2133 return 0;
2134
2135 out_cleanup_disk:
2136 put_disk(msb->disk);
2137 out_free_tag_set:
2138 blk_mq_free_tag_set(&msb->tag_set);
2139 out_release_id:
2140 mutex_lock(&msb_disk_lock);
2141 idr_remove(&msb_disk_idr, msb->disk_id);
2142 mutex_unlock(&msb_disk_lock);
2143 return rc;
2144 }
regards,
dan carpenter
reply other threads:[~2022-11-25 8:02 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=Y4B2cIhw6DVSkvKD@kili \
--to=error27@gmail.com \
--cc=jiasheng@iscas.ac.cn \
--cc=linux-mmc@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox