Files
kernel_google_b1c1/include/linux
Dan Williams df08c32ce3 block: fix bdi vs gendisk lifetime mismatch
The name for a bdi of a gendisk is derived from the gendisk's devt.
However, since the gendisk is destroyed before the bdi it leaves a
window where a new gendisk could dynamically reuse the same devt while a
bdi with the same name is still live.  Arrange for the bdi to hold a
reference against its "owner" disk device while it is registered.
Otherwise we can hit sysfs duplicate name collisions like the following:

 WARNING: CPU: 10 PID: 2078 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x64/0x80
 sysfs: cannot create duplicate filename '/devices/virtual/bdi/259:1'

 Hardware name: HP ProLiant DL580 Gen8, BIOS P79 05/06/2015
  0000000000000286 0000000002c04ad5 ffff88006f24f970 ffffffff8134caec
  ffff88006f24f9c0 0000000000000000 ffff88006f24f9b0 ffffffff8108c351
  0000001f0000000c ffff88105d236000 ffff88105d1031e0 ffff8800357427f8
 Call Trace:
  [<ffffffff8134caec>] dump_stack+0x63/0x87
  [<ffffffff8108c351>] __warn+0xd1/0xf0
  [<ffffffff8108c3cf>] warn_slowpath_fmt+0x5f/0x80
  [<ffffffff812a0d34>] sysfs_warn_dup+0x64/0x80
  [<ffffffff812a0e1e>] sysfs_create_dir_ns+0x7e/0x90
  [<ffffffff8134faaa>] kobject_add_internal+0xaa/0x320
  [<ffffffff81358d4e>] ? vsnprintf+0x34e/0x4d0
  [<ffffffff8134ff55>] kobject_add+0x75/0xd0
  [<ffffffff816e66b2>] ? mutex_lock+0x12/0x2f
  [<ffffffff8148b0a5>] device_add+0x125/0x610
  [<ffffffff8148b788>] device_create_groups_vargs+0xd8/0x100
  [<ffffffff8148b7cc>] device_create_vargs+0x1c/0x20
  [<ffffffff811b775c>] bdi_register+0x8c/0x180
  [<ffffffff811b7877>] bdi_register_dev+0x27/0x30
  [<ffffffff813317f5>] add_disk+0x175/0x4a0

Cc: <stable@vger.kernel.org>
Reported-by: Yi Zhang <yizhan@redhat.com>
Tested-by: Yi Zhang <yizhan@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>

Fixed up missing 0 return in bdi_register_owner().

Signed-off-by: Jens Axboe <axboe@fb.com>
2016-08-04 14:19:16 -06:00
..
2016-03-04 23:50:27 -06:00
2016-07-04 17:19:22 +05:30
2016-07-25 11:47:52 +01:00
2016-07-04 08:19:21 -07:00
2016-03-15 16:55:16 -07:00
2016-06-07 22:07:09 -04:00
2016-08-04 08:50:07 -04:00
2016-06-07 13:41:38 -06:00
2016-07-01 16:30:38 -04:00
2016-06-25 09:04:48 -07:00
2016-08-02 19:35:24 -04:00
2016-07-26 16:19:19 -07:00
2016-07-24 16:36:29 -04:00
2016-06-07 13:41:38 -06:00
2016-05-17 15:48:12 -04:00
2016-05-29 18:35:12 -04:00
2016-05-29 18:35:12 -04:00
2016-06-27 12:26:08 -07:00
2016-07-22 09:07:02 +02:00
2016-03-11 14:58:58 -05:00
2016-02-11 09:59:22 -05:00
2016-03-22 15:36:02 -07:00
2016-06-21 09:38:45 +10:00
2016-08-02 19:35:44 -04:00
2016-05-11 22:37:54 +02:00
2016-03-22 15:36:02 -07:00
2016-03-22 15:36:02 -07:00
2016-05-03 15:07:35 -07:00
2016-05-19 19:12:14 -07:00
2016-08-04 10:16:55 +09:30
2016-06-24 10:40:41 -05:00
2016-07-29 12:17:52 -07:00
2016-07-12 19:25:38 -07:00
2016-07-01 05:32:17 -04:00
2016-06-03 19:37:21 -04:00
2016-05-17 15:48:12 -04:00
2016-05-17 15:47:55 -04:00
2016-04-25 15:09:11 -04:00
2016-02-16 13:04:58 -05:00
2016-05-02 09:00:56 -05:00
2016-07-28 16:07:41 -07:00
2016-05-19 19:12:14 -07:00
2016-02-11 18:35:48 -08:00
2016-03-14 15:43:11 -04:00
2016-07-12 19:25:38 -07:00
2016-02-16 13:04:58 -05:00
2016-06-23 18:37:05 +02:00
2016-03-17 15:09:34 -07:00
2016-07-06 10:51:14 +01:00
2016-03-22 15:36:02 -07:00
2016-07-26 16:19:19 -07:00
2016-06-14 10:54:40 -07:00
2016-07-26 16:19:19 -07:00
2016-05-08 23:46:14 -04:00
2016-05-19 19:12:14 -07:00
2016-06-20 12:47:15 -07:00
2016-07-19 17:43:38 +03:00
2016-05-23 17:04:14 -07:00
2016-04-07 16:53:29 -04:00
2016-07-26 16:19:19 -07:00
2016-05-20 17:58:30 -07:00
2016-02-22 16:10:08 -07:00
2016-06-25 09:04:48 -07:00