From: kernel test robot <lkp@intel.com>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>, hch@infradead.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
axboe@kernel.dk, desmondcheongzx@gmail.com,
gregkh@linuxfoundation.org, linux-block@vger.kernel.org,
linux-kernel-mentees@lists.linuxfoundation.org,
linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
miquel.raynal@bootlin.com, richard@nod.at
Subject: Re: [PATCH v2] block: genhd: don't call probe function with major_names_lock held
Date: Sat, 19 Jun 2021 14:14:22 +0800 [thread overview]
Message-ID: <202106191439.dy46ednN-lkp@intel.com> (raw)
In-Reply-To: <f790f8fb-5758-ea4e-a527-0ee4af82dd44@i-love.sakura.ne.jp>
[-- Attachment #1: Type: text/plain, Size: 11279 bytes --]
Hi Tetsuo,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.13-rc6]
[cannot apply to block/for-next next-20210618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git dd860052c99b1e088352bdd4fb7aef46f8d2ef47
config: x86_64-randconfig-a004-20210618 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d1baf2895467735ab14f4b3415fce204c0cc8e7f)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/1de14b707f1a3e49fa4412b1eb8391f09747a005
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
git checkout 1de14b707f1a3e49fa4412b1eb8391f09747a005
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> block/genhd.c:223: warning: expecting prototype for __register_blkdev(). Prototype was for ____register_blkdev() instead
vim +223 block/genhd.c
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 196
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 197 /**
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 198 * __register_blkdev - register a new block device
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 199 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 200 * @major: the requested major device number [1..BLKDEV_MAJOR_MAX-1]. If
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 201 * @major = 0, try to allocate any unused major number.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 202 * @name: the name of the new block device as a zero terminated string
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 203 * @probe: callback that is called on access to any minor number of @major
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 204 * @owner: the owner of @probe function (i.e. THIS_MODULE or NULL).
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 205 *
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 206 * The @name must be unique within the system.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 207 *
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 208 * The return value depends on the @major input parameter:
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 209 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 210 * - if a major device number was requested in range [1..BLKDEV_MAJOR_MAX-1]
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 211 * then the function returns zero on success, or a negative error code
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 212 * - if any unused major number was requested with @major = 0 parameter
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 213 * then the return value is the allocated major number in range
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 214 * [1..BLKDEV_MAJOR_MAX-1] or a negative error code otherwise
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 215 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 216 * See Documentation/admin-guide/devices.txt for the list of allocated
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 217 * major numbers.
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 218 *
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 219 * Use register_blkdev instead for any new code.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 220 */
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 221 int ____register_blkdev(unsigned int major, const char *name,
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 222 void (*probe)(dev_t devt), struct module *owner)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 @223 {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 224 struct blk_major_name **n, *p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 225 int index, ret = 0;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 226
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 227 mutex_lock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 228
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 229 /* temporary */
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 230 if (major == 0) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 231 for (index = ARRAY_SIZE(major_names)-1; index > 0; index--) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 232 if (major_names[index] == NULL)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 233 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 234 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 235
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 236 if (index == 0) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 237 printk("%s: failed to get major for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 238 __func__, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 239 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 240 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 241 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 242 major = index;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 243 ret = major;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 244 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 245
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 246 if (major >= BLKDEV_MAJOR_MAX) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 247 pr_err("%s: major requested (%u) is greater than the maximum (%u) for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 248 __func__, major, BLKDEV_MAJOR_MAX-1, name);
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 249
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 250 ret = -EINVAL;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 251 goto out;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 252 }
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 253
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 254 p = kmalloc(sizeof(struct blk_major_name), GFP_KERNEL);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 255 if (p == NULL) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 256 ret = -ENOMEM;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 257 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 258 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 259
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 260 p->major = major;
a160c6159d4a0c block/genhd.c Christoph Hellwig 2020-10-29 261 p->probe = probe;
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 262 p->owner = owner;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 263 strlcpy(p->name, name, sizeof(p->name));
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 264 p->next = NULL;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 265 index = major_to_index(major);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 266
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 267 for (n = &major_names[index]; *n; n = &(*n)->next) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 268 if ((*n)->major == major)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 269 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 270 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 271 if (!*n)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 272 *n = p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 273 else
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 274 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 275
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 276 if (ret < 0) {
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 277 printk("register_blkdev: cannot get major %u for %s\n",
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 278 major, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 279 kfree(p);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 280 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 281 out:
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 282 mutex_unlock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 283 return ret;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 284 }
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 285 EXPORT_SYMBOL(____register_blkdev);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 286
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 44320 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>, hch@infradead.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
axboe@kernel.dk, desmondcheongzx@gmail.com,
gregkh@linuxfoundation.org, linux-block@vger.kernel.org,
linux-kernel-mentees@lists.linuxfoundation.org,
linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
miquel.raynal@bootlin.com, richard@nod.at
Subject: Re: [PATCH v2] block: genhd: don't call probe function with major_names_lock held
Date: Sat, 19 Jun 2021 14:14:22 +0800 [thread overview]
Message-ID: <202106191439.dy46ednN-lkp@intel.com> (raw)
In-Reply-To: <f790f8fb-5758-ea4e-a527-0ee4af82dd44@i-love.sakura.ne.jp>
[-- Attachment #1: Type: text/plain, Size: 11279 bytes --]
Hi Tetsuo,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.13-rc6]
[cannot apply to block/for-next next-20210618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git dd860052c99b1e088352bdd4fb7aef46f8d2ef47
config: x86_64-randconfig-a004-20210618 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d1baf2895467735ab14f4b3415fce204c0cc8e7f)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/1de14b707f1a3e49fa4412b1eb8391f09747a005
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
git checkout 1de14b707f1a3e49fa4412b1eb8391f09747a005
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> block/genhd.c:223: warning: expecting prototype for __register_blkdev(). Prototype was for ____register_blkdev() instead
vim +223 block/genhd.c
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 196
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 197 /**
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 198 * __register_blkdev - register a new block device
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 199 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 200 * @major: the requested major device number [1..BLKDEV_MAJOR_MAX-1]. If
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 201 * @major = 0, try to allocate any unused major number.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 202 * @name: the name of the new block device as a zero terminated string
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 203 * @probe: callback that is called on access to any minor number of @major
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 204 * @owner: the owner of @probe function (i.e. THIS_MODULE or NULL).
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 205 *
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 206 * The @name must be unique within the system.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 207 *
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 208 * The return value depends on the @major input parameter:
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 209 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 210 * - if a major device number was requested in range [1..BLKDEV_MAJOR_MAX-1]
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 211 * then the function returns zero on success, or a negative error code
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 212 * - if any unused major number was requested with @major = 0 parameter
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 213 * then the return value is the allocated major number in range
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 214 * [1..BLKDEV_MAJOR_MAX-1] or a negative error code otherwise
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 215 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 216 * See Documentation/admin-guide/devices.txt for the list of allocated
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 217 * major numbers.
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 218 *
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 219 * Use register_blkdev instead for any new code.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 220 */
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 221 int ____register_blkdev(unsigned int major, const char *name,
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 222 void (*probe)(dev_t devt), struct module *owner)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 @223 {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 224 struct blk_major_name **n, *p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 225 int index, ret = 0;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 226
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 227 mutex_lock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 228
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 229 /* temporary */
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 230 if (major == 0) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 231 for (index = ARRAY_SIZE(major_names)-1; index > 0; index--) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 232 if (major_names[index] == NULL)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 233 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 234 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 235
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 236 if (index == 0) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 237 printk("%s: failed to get major for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 238 __func__, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 239 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 240 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 241 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 242 major = index;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 243 ret = major;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 244 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 245
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 246 if (major >= BLKDEV_MAJOR_MAX) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 247 pr_err("%s: major requested (%u) is greater than the maximum (%u) for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 248 __func__, major, BLKDEV_MAJOR_MAX-1, name);
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 249
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 250 ret = -EINVAL;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 251 goto out;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 252 }
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 253
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 254 p = kmalloc(sizeof(struct blk_major_name), GFP_KERNEL);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 255 if (p == NULL) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 256 ret = -ENOMEM;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 257 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 258 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 259
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 260 p->major = major;
a160c6159d4a0c block/genhd.c Christoph Hellwig 2020-10-29 261 p->probe = probe;
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 262 p->owner = owner;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 263 strlcpy(p->name, name, sizeof(p->name));
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 264 p->next = NULL;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 265 index = major_to_index(major);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 266
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 267 for (n = &major_names[index]; *n; n = &(*n)->next) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 268 if ((*n)->major == major)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 269 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 270 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 271 if (!*n)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 272 *n = p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 273 else
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 274 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 275
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 276 if (ret < 0) {
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 277 printk("register_blkdev: cannot get major %u for %s\n",
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 278 major, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 279 kfree(p);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 280 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 281 out:
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 282 mutex_unlock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 283 return ret;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 284 }
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 285 EXPORT_SYMBOL(____register_blkdev);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 286
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 44320 bytes --]
[-- Attachment #3: Type: text/plain, Size: 144 bytes --]
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>, hch@infradead.org
Cc: axboe@kernel.dk, kbuild-all@lists.01.org, richard@nod.at,
linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
clang-built-linux@googlegroups.com,
linux-mtd@lists.infradead.org, miquel.raynal@bootlin.com,
desmondcheongzx@gmail.com,
linux-kernel-mentees@lists.linuxfoundation.org
Subject: Re: [PATCH v2] block: genhd: don't call probe function with major_names_lock held
Date: Sat, 19 Jun 2021 14:14:22 +0800 [thread overview]
Message-ID: <202106191439.dy46ednN-lkp@intel.com> (raw)
In-Reply-To: <f790f8fb-5758-ea4e-a527-0ee4af82dd44@i-love.sakura.ne.jp>
[-- Attachment #1: Type: text/plain, Size: 11279 bytes --]
Hi Tetsuo,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.13-rc6]
[cannot apply to block/for-next next-20210618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git dd860052c99b1e088352bdd4fb7aef46f8d2ef47
config: x86_64-randconfig-a004-20210618 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d1baf2895467735ab14f4b3415fce204c0cc8e7f)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/1de14b707f1a3e49fa4412b1eb8391f09747a005
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
git checkout 1de14b707f1a3e49fa4412b1eb8391f09747a005
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> block/genhd.c:223: warning: expecting prototype for __register_blkdev(). Prototype was for ____register_blkdev() instead
vim +223 block/genhd.c
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 196
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 197 /**
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 198 * __register_blkdev - register a new block device
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 199 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 200 * @major: the requested major device number [1..BLKDEV_MAJOR_MAX-1]. If
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 201 * @major = 0, try to allocate any unused major number.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 202 * @name: the name of the new block device as a zero terminated string
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 203 * @probe: callback that is called on access to any minor number of @major
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 204 * @owner: the owner of @probe function (i.e. THIS_MODULE or NULL).
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 205 *
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 206 * The @name must be unique within the system.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 207 *
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 208 * The return value depends on the @major input parameter:
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 209 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 210 * - if a major device number was requested in range [1..BLKDEV_MAJOR_MAX-1]
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 211 * then the function returns zero on success, or a negative error code
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 212 * - if any unused major number was requested with @major = 0 parameter
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 213 * then the return value is the allocated major number in range
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 214 * [1..BLKDEV_MAJOR_MAX-1] or a negative error code otherwise
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 215 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 216 * See Documentation/admin-guide/devices.txt for the list of allocated
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 217 * major numbers.
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 218 *
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 219 * Use register_blkdev instead for any new code.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 220 */
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 221 int ____register_blkdev(unsigned int major, const char *name,
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 222 void (*probe)(dev_t devt), struct module *owner)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 @223 {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 224 struct blk_major_name **n, *p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 225 int index, ret = 0;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 226
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 227 mutex_lock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 228
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 229 /* temporary */
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 230 if (major == 0) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 231 for (index = ARRAY_SIZE(major_names)-1; index > 0; index--) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 232 if (major_names[index] == NULL)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 233 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 234 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 235
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 236 if (index == 0) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 237 printk("%s: failed to get major for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 238 __func__, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 239 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 240 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 241 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 242 major = index;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 243 ret = major;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 244 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 245
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 246 if (major >= BLKDEV_MAJOR_MAX) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 247 pr_err("%s: major requested (%u) is greater than the maximum (%u) for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 248 __func__, major, BLKDEV_MAJOR_MAX-1, name);
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 249
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 250 ret = -EINVAL;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 251 goto out;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 252 }
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 253
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 254 p = kmalloc(sizeof(struct blk_major_name), GFP_KERNEL);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 255 if (p == NULL) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 256 ret = -ENOMEM;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 257 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 258 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 259
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 260 p->major = major;
a160c6159d4a0c block/genhd.c Christoph Hellwig 2020-10-29 261 p->probe = probe;
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 262 p->owner = owner;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 263 strlcpy(p->name, name, sizeof(p->name));
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 264 p->next = NULL;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 265 index = major_to_index(major);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 266
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 267 for (n = &major_names[index]; *n; n = &(*n)->next) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 268 if ((*n)->major == major)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 269 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 270 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 271 if (!*n)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 272 *n = p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 273 else
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 274 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 275
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 276 if (ret < 0) {
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 277 printk("register_blkdev: cannot get major %u for %s\n",
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 278 major, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 279 kfree(p);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 280 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 281 out:
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 282 mutex_unlock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 283 return ret;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 284 }
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 285 EXPORT_SYMBOL(____register_blkdev);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 286
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 44320 bytes --]
[-- Attachment #3: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v2] block: genhd: don't call probe function with major_names_lock held
Date: Sat, 19 Jun 2021 14:14:22 +0800 [thread overview]
Message-ID: <202106191439.dy46ednN-lkp@intel.com> (raw)
In-Reply-To: <f790f8fb-5758-ea4e-a527-0ee4af82dd44@i-love.sakura.ne.jp>
[-- Attachment #1: Type: text/plain, Size: 11429 bytes --]
Hi Tetsuo,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.13-rc6]
[cannot apply to block/for-next next-20210618]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git dd860052c99b1e088352bdd4fb7aef46f8d2ef47
config: x86_64-randconfig-a004-20210618 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d1baf2895467735ab14f4b3415fce204c0cc8e7f)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/1de14b707f1a3e49fa4412b1eb8391f09747a005
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tetsuo-Handa/block-genhd-don-t-call-probe-function-with-major_names_lock-held/20210619-090731
git checkout 1de14b707f1a3e49fa4412b1eb8391f09747a005
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> block/genhd.c:223: warning: expecting prototype for __register_blkdev(). Prototype was for ____register_blkdev() instead
vim +223 block/genhd.c
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 196
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 197 /**
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 198 * __register_blkdev - register a new block device
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 199 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 200 * @major: the requested major device number [1..BLKDEV_MAJOR_MAX-1]. If
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 201 * @major = 0, try to allocate any unused major number.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 202 * @name: the name of the new block device as a zero terminated string
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 203 * @probe: callback that is called on access to any minor number of @major
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 204 * @owner: the owner of @probe function (i.e. THIS_MODULE or NULL).
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 205 *
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 206 * The @name must be unique within the system.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 207 *
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 208 * The return value depends on the @major input parameter:
0e056eb5530da8 block/genhd.c Mauro Carvalho Chehab 2017-03-30 209 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 210 * - if a major device number was requested in range [1..BLKDEV_MAJOR_MAX-1]
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 211 * then the function returns zero on success, or a negative error code
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 212 * - if any unused major number was requested with @major = 0 parameter
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 213 * then the return value is the allocated major number in range
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 214 * [1..BLKDEV_MAJOR_MAX-1] or a negative error code otherwise
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 215 *
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 216 * See Documentation/admin-guide/devices.txt for the list of allocated
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 217 * major numbers.
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 218 *
e2b6b301871719 block/genhd.c Christoph Hellwig 2020-11-14 219 * Use register_blkdev instead for any new code.
9e8c0bccdc944b block/genhd.c Márton Németh 2009-02-20 220 */
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 221 int ____register_blkdev(unsigned int major, const char *name,
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 222 void (*probe)(dev_t devt), struct module *owner)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 @223 {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 224 struct blk_major_name **n, *p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 225 int index, ret = 0;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 226
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 227 mutex_lock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 228
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 229 /* temporary */
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 230 if (major == 0) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 231 for (index = ARRAY_SIZE(major_names)-1; index > 0; index--) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 232 if (major_names[index] == NULL)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 233 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 234 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 235
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 236 if (index == 0) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 237 printk("%s: failed to get major for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 238 __func__, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 239 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 240 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 241 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 242 major = index;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 243 ret = major;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 244 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 245
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 246 if (major >= BLKDEV_MAJOR_MAX) {
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 247 pr_err("%s: major requested (%u) is greater than the maximum (%u) for %s\n",
dfc76d11dd455a block/genhd.c Keyur Patel 2019-02-17 248 __func__, major, BLKDEV_MAJOR_MAX-1, name);
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 249
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 250 ret = -EINVAL;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 251 goto out;
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 252 }
133d55cdb2f1f9 block/genhd.c Logan Gunthorpe 2017-06-16 253
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 254 p = kmalloc(sizeof(struct blk_major_name), GFP_KERNEL);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 255 if (p == NULL) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 256 ret = -ENOMEM;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 257 goto out;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 258 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 259
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 260 p->major = major;
a160c6159d4a0c block/genhd.c Christoph Hellwig 2020-10-29 261 p->probe = probe;
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 262 p->owner = owner;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 263 strlcpy(p->name, name, sizeof(p->name));
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 264 p->next = NULL;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 265 index = major_to_index(major);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 266
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 267 for (n = &major_names[index]; *n; n = &(*n)->next) {
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 268 if ((*n)->major == major)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 269 break;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 270 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 271 if (!*n)
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 272 *n = p;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 273 else
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 274 ret = -EBUSY;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 275
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 276 if (ret < 0) {
f33ff110ef31bd block/genhd.c Srivatsa S. Bhat 2018-02-05 277 printk("register_blkdev: cannot get major %u for %s\n",
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 278 major, name);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 279 kfree(p);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 280 }
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 281 out:
e49fbbbf0aa14f block/genhd.c Christoph Hellwig 2020-10-29 282 mutex_unlock(&major_names_lock);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 283 return ret;
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 284 }
1de14b707f1a3e block/genhd.c Tetsuo Handa 2021-06-19 285 EXPORT_SYMBOL(____register_blkdev);
^1da177e4c3f41 drivers/block/genhd.c Linus Torvalds 2005-04-16 286
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 44320 bytes --]
next prev parent reply other threads:[~2021-06-19 6:15 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-19 1:05 [PATCH v2] block: genhd: don't call probe function with major_names_lock held Tetsuo Handa
2021-06-19 1:05 ` Tetsuo Handa
2021-06-19 1:05 ` Tetsuo Handa
2021-06-19 3:24 ` kernel test robot
2021-06-19 3:24 ` kernel test robot
2021-06-19 3:24 ` kernel test robot
2021-06-19 3:24 ` kernel test robot
2021-06-19 6:14 ` kernel test robot [this message]
2021-06-19 6:14 ` kernel test robot
2021-06-19 6:14 ` kernel test robot
2021-06-19 6:14 ` kernel test robot
2021-06-19 6:44 ` Greg KH
2021-06-19 6:44 ` Greg KH
2021-06-19 6:44 ` Greg KH
2021-06-19 8:47 ` Tetsuo Handa
2021-06-19 8:47 ` Tetsuo Handa
2021-06-19 8:47 ` Tetsuo Handa
2021-06-20 2:44 ` Hillf Danton
2021-06-20 2:44 ` Hillf Danton
2021-06-20 13:54 ` Tetsuo Handa
2021-06-20 13:54 ` Tetsuo Handa
2021-06-20 13:54 ` Tetsuo Handa
2021-06-21 8:54 ` Greg KH
2021-06-21 8:54 ` Greg KH
2021-06-21 8:54 ` Greg KH
2021-06-21 6:18 ` Christoph Hellwig
2021-06-21 6:18 ` Christoph Hellwig
2021-06-21 6:18 ` Christoph Hellwig
2021-08-15 6:52 ` [PATCH v3] " Tetsuo Handa
2021-08-15 7:06 ` Greg KH
2021-08-15 7:49 ` Tetsuo Handa
2021-08-15 9:19 ` Greg KH
2021-08-18 11:07 ` [PATCH v4] " Tetsuo Handa
2021-08-18 13:27 ` Greg KH
2021-08-18 14:44 ` Tetsuo Handa
2021-08-18 15:28 ` Greg KH
2021-08-21 6:12 ` [PATCH v5] " Tetsuo Handa
2021-08-18 13:47 ` [PATCH v4] " Christoph Hellwig
2021-08-18 14:34 ` Tetsuo Handa
2021-08-18 14:41 ` Greg KH
2021-08-18 14:51 ` Tetsuo Handa
2021-08-19 9:16 ` Christoph Hellwig
2021-08-19 14:47 ` Tetsuo Handa
2021-08-19 9:19 ` Christoph Hellwig
2021-08-19 14:23 ` Tetsuo Handa
2021-08-19 15:10 ` Greg KH
2021-08-16 7:33 ` [PATCH v3] " Christoph Hellwig
2021-08-16 14:44 ` Tetsuo Handa
[not found] ` <20210817081045.3609-1-hdanton@sina.com>
2021-08-17 10:18 ` Tetsuo Handa
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=202106191439.dy46ednN-lkp@intel.com \
--to=lkp@intel.com \
--cc=axboe@kernel.dk \
--cc=clang-built-linux@googlegroups.com \
--cc=desmondcheongzx@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=kbuild-all@lists.01.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel-mentees@lists.linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=miquel.raynal@bootlin.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=richard@nod.at \
/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.