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 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.