CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Mathias Nyman <[email protected]>
Hi Mathias, I love your patch! Perhaps something to improve: [auto build test WARNING on next-20211123] [cannot apply to usb/usb-testing v5.16-rc2 v5.16-rc1 v5.15 v5.16-rc7] [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/Mathias-Nyman/usb-hub-Fix-locking-issues-with-address0_mutex/20211123-181633 base: aacdecce8147c20b01f865b4e214bb8dbe8c4af1 :::::: branch date: 5 weeks ago :::::: commit date: 5 weeks ago config: x86_64-randconfig-c002-20211123 (https://download.01.org/0day-ci/archive/20211230/[email protected]/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Julia Lawall <[email protected]> cocci warnings: (new ones prefixed by >>) >> drivers/usb/core/hub.c:5250:2-12: second lock on line 5250 vim +5250 drivers/usb/core/hub.c a4f55d8b8c146f David Heinzelmann 2019-10-09 5179 af376a461cf075 Dan Williams 2014-05-20 5180 static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, af376a461cf075 Dan Williams 2014-05-20 5181 u16 portchange) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5182 { 94c43b9897abf4 Alan Stern 2017-08-01 5183 int status = -ENODEV; 94c43b9897abf4 Alan Stern 2017-08-01 5184 int i; 430ee58e03f1ed Sebastian Andrzej Siewior 2012-12-18 5185 unsigned unit_load; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5186 struct usb_device *hdev = hub->hdev; 90da096ee46b68 Balaji Rao 2007-11-22 5187 struct usb_hcd *hcd = bus_to_hcd(hdev->bus); d99f6b41308779 Dan Williams 2014-05-20 5188 struct usb_port *port_dev = hub->ports[port1 - 1]; af376a461cf075 Dan Williams 2014-05-20 5189 struct usb_device *udev = port_dev->child; 5ee0f803cc3a07 Oliver Neukum 2014-07-14 5190 static int unreliable_port = -1; 0e162125abbf80 Mathias Nyman 2021-11-23 5191 bool retry_locked; 8808f00c7adfc8 Alan Stern 2008-04-28 5192 24618b0cd42f93 Alan Stern 2008-04-28 5193 /* Disconnect any existing devices under this port */ b76baa8154335a Peter Chen 2012-11-09 5194 if (udev) { b2108f1e519e98 Peter Chen 2014-11-04 5195 if (hcd->usb_phy && !hdev->parent) 3d46e73dfdb840 Antoine Tenart 2014-09-24 5196 usb_phy_notify_disconnect(hcd->usb_phy, udev->speed); d99f6b41308779 Dan Williams 2014-05-20 5197 usb_disconnect(&port_dev->child); b76baa8154335a Peter Chen 2012-11-09 5198 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5199 253e05724f9230 Alan Stern 2009-10-27 5200 /* We can forget about a "removed" device when there's a physical 253e05724f9230 Alan Stern 2009-10-27 5201 * disconnect or the connect status changes. 253e05724f9230 Alan Stern 2009-10-27 5202 */ 253e05724f9230 Alan Stern 2009-10-27 5203 if (!(portstatus & USB_PORT_STAT_CONNECTION) || 253e05724f9230 Alan Stern 2009-10-27 5204 (portchange & USB_PORT_STAT_C_CONNECTION)) 253e05724f9230 Alan Stern 2009-10-27 5205 clear_bit(port1, hub->removed_bits); 253e05724f9230 Alan Stern 2009-10-27 5206 5257d97a219e17 Alan Stern 2008-09-22 5207 if (portchange & (USB_PORT_STAT_C_CONNECTION | 5257d97a219e17 Alan Stern 2008-09-22 5208 USB_PORT_STAT_C_ENABLE)) { ad493e5e580546 Lan Tianyu 2013-01-23 5209 status = hub_port_debounce_be_stable(hub, port1); 5257d97a219e17 Alan Stern 2008-09-22 5210 if (status < 0) { 5ee0f803cc3a07 Oliver Neukum 2014-07-14 5211 if (status != -ENODEV && 5ee0f803cc3a07 Oliver Neukum 2014-07-14 5212 port1 != unreliable_port && 5ee0f803cc3a07 Oliver Neukum 2014-07-14 5213 printk_ratelimit()) dd5f5006d10355 Takashi Iwai 2014-08-19 5214 dev_err(&port_dev->dev, "connect-debounce failed\n"); 5257d97a219e17 Alan Stern 2008-09-22 5215 portstatus &= ~USB_PORT_STAT_CONNECTION; 5ee0f803cc3a07 Oliver Neukum 2014-07-14 5216 unreliable_port = port1; 5257d97a219e17 Alan Stern 2008-09-22 5217 } else { 5257d97a219e17 Alan Stern 2008-09-22 5218 portstatus = status; 5257d97a219e17 Alan Stern 2008-09-22 5219 } 5257d97a219e17 Alan Stern 2008-09-22 5220 } 5257d97a219e17 Alan Stern 2008-09-22 5221 253e05724f9230 Alan Stern 2009-10-27 5222 /* Return now if debouncing failed or nothing is connected or 253e05724f9230 Alan Stern 2009-10-27 5223 * the device was "removed". 253e05724f9230 Alan Stern 2009-10-27 5224 */ 253e05724f9230 Alan Stern 2009-10-27 5225 if (!(portstatus & USB_PORT_STAT_CONNECTION) || 253e05724f9230 Alan Stern 2009-10-27 5226 test_bit(port1, hub->removed_bits)) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 5227 fbaecff06a7db4 Deepak Das 2015-01-21 5228 /* fbaecff06a7db4 Deepak Das 2015-01-21 5229 * maybe switch power back on (e.g. root hub was reset) fbaecff06a7db4 Deepak Das 2015-01-21 5230 * but only if the port isn't owned by someone else. fbaecff06a7db4 Deepak Das 2015-01-21 5231 */ 9262c19d14c433 Dan Williams 2014-05-20 5232 if (hub_is_port_power_switchable(hub) fbaecff06a7db4 Deepak Das 2015-01-21 5233 && !port_is_power_on(hub, portstatus) fbaecff06a7db4 Deepak Das 2015-01-21 5234 && !port_dev->port_owner) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5235 set_port_feature(hdev, port1, USB_PORT_FEAT_POWER); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5236 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5237 if (portstatus & USB_PORT_STAT_ENABLE) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5238 goto done; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5239 return; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5240 } 430ee58e03f1ed Sebastian Andrzej Siewior 2012-12-18 5241 if (hub_is_superspeed(hub->hdev)) 430ee58e03f1ed Sebastian Andrzej Siewior 2012-12-18 5242 unit_load = 150; 430ee58e03f1ed Sebastian Andrzej Siewior 2012-12-18 5243 else 430ee58e03f1ed Sebastian Andrzej Siewior 2012-12-18 5244 unit_load = 100; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5245 e9e88fb7bca9f5 Alan Stern 2013-03-27 5246 status = 0; 6ae6dc22d2d1ce Mathias Nyman 2021-11-16 5247 19502e6911e4ef Alan Stern 2020-09-28 5248 for (i = 0; i < PORT_INIT_TRIES; i++) { 0e162125abbf80 Mathias Nyman 2021-11-23 5249 usb_lock_port(port_dev); 0e162125abbf80 Mathias Nyman 2021-11-23 @5250 mutex_lock(hcd->address0_mutex); 0e162125abbf80 Mathias Nyman 2021-11-23 5251 retry_locked = true; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5252 /* reallocate for each attempt, since references ^1da177e4c3f41 Linus Torvalds 2005-04-16 5253 * to the previous one can escape in various ways ^1da177e4c3f41 Linus Torvalds 2005-04-16 5254 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5255 udev = usb_alloc_dev(hdev, hdev->bus, port1); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5256 if (!udev) { d99f6b41308779 Dan Williams 2014-05-20 5257 dev_err(&port_dev->dev, d99f6b41308779 Dan Williams 2014-05-20 5258 "couldn't allocate usb_device\n"); 0e162125abbf80 Mathias Nyman 2021-11-23 5259 mutex_unlock(hcd->address0_mutex); 0e162125abbf80 Mathias Nyman 2021-11-23 5260 usb_unlock_port(port_dev); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5261 goto done; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5262 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5263 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5264 usb_set_device_state(udev, USB_STATE_POWERED); 55c527187c9d78 Alan Stern 2005-11-23 5265 udev->bus_mA = hub->mA_per_port; b6956ffa595db9 Alan Stern 2006-08-30 5266 udev->level = hdev->level + 1; 8af548dc8e36f8 Inaky Perez-Gonzalez 2008-04-08 5267 udev->wusb = hub_is_wusb(hub); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5268 8a1b2725a60d32 Mathias Nyman 2015-12-10 5269 /* Devices connected to SuperSpeed hubs are USB 3.0 or later */ 131dec344d5e41 Sarah Sharp 2010-12-06 5270 if (hub_is_superspeed(hub->hdev)) e7b7717247f61e Sarah Sharp 2009-04-27 5271 udev->speed = USB_SPEED_SUPER; e7b7717247f61e Sarah Sharp 2009-04-27 5272 else e7b7717247f61e Sarah Sharp 2009-04-27 5273 udev->speed = USB_SPEED_UNKNOWN; e7b7717247f61e Sarah Sharp 2009-04-27 5274 3b29b68b162778 Alan Stern 2011-02-22 5275 choose_devnum(udev); c6515272b85874 Sarah Sharp 2009-04-27 5276 if (udev->devnum <= 0) { c6515272b85874 Sarah Sharp 2009-04-27 5277 status = -ENOTCONN; /* Don't retry */ c6515272b85874 Sarah Sharp 2009-04-27 5278 goto loop; c6515272b85874 Sarah Sharp 2009-04-27 5279 } c6515272b85874 Sarah Sharp 2009-04-27 5280 e7b7717247f61e Sarah Sharp 2009-04-27 5281 /* reset (non-USB 3.0 devices) and get descriptor */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5282 status = hub_port_init(hub, udev, port1, i); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5283 if (status < 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5284 goto loop; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5285 6ae6dc22d2d1ce Mathias Nyman 2021-11-16 5286 mutex_unlock(hcd->address0_mutex); 0e162125abbf80 Mathias Nyman 2021-11-23 5287 usb_unlock_port(port_dev); 0e162125abbf80 Mathias Nyman 2021-11-23 5288 retry_locked = false; 6ae6dc22d2d1ce Mathias Nyman 2021-11-16 5289 93362a875fc698 Phil Dibowitz 2010-07-22 5290 if (udev->quirks & USB_QUIRK_DELAY_INIT) b2a542bbb3081d Dmitry Fleytman 2017-09-05 5291 msleep(2000); 93362a875fc698 Phil Dibowitz 2010-07-22 5292 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5293 /* consecutive bus-powered hubs aren't reliable; they can ^1da177e4c3f41 Linus Torvalds 2005-04-16 5294 * violate the voltage drop budget. if the new child has ^1da177e4c3f41 Linus Torvalds 2005-04-16 5295 * a "powered" LED, users should notice we didn't enable it ^1da177e4c3f41 Linus Torvalds 2005-04-16 5296 * (without reading syslog), even without per-port LEDs ^1da177e4c3f41 Linus Torvalds 2005-04-16 5297 * on the parent. ^1da177e4c3f41 Linus Torvalds 2005-04-16 5298 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5299 if (udev->descriptor.bDeviceClass == USB_CLASS_HUB 430ee58e03f1ed Sebastian Andrzej Siewior 2012-12-18 5300 && udev->bus_mA <= unit_load) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 5301 u16 devstat; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5302 d9e1e1484ade39 Felipe Balbi 2017-11-02 5303 status = usb_get_std_status(udev, USB_RECIP_DEVICE, 0, ^1da177e4c3f41 Linus Torvalds 2005-04-16 5304 &devstat); 15b7336e02d998 Alan Stern 2013-07-30 5305 if (status) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 5306 dev_dbg(&udev->dev, "get status %d ?\n", status); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5307 goto loop_disable; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5308 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5309 if ((devstat & (1 << USB_DEVICE_SELF_POWERED)) == 0) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 5310 dev_err(&udev->dev, ^1da177e4c3f41 Linus Torvalds 2005-04-16 5311 "can't connect bus-powered hub " ^1da177e4c3f41 Linus Torvalds 2005-04-16 5312 "to this port\n"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5313 if (hub->has_indicators) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 5314 hub->indicator[port1-1] = ^1da177e4c3f41 Linus Torvalds 2005-04-16 5315 INDICATOR_AMBER_BLINK; 22f6a0f0e3549b Shaibal Dutta 2014-02-01 5316 queue_delayed_work( 22f6a0f0e3549b Shaibal Dutta 2014-02-01 5317 system_power_efficient_wq, 22f6a0f0e3549b Shaibal Dutta 2014-02-01 5318 &hub->leds, 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5319 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5320 status = -ENOTCONN; /* Don't retry */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5321 goto loop_disable; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5322 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5323 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5324 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5325 /* check for devices running slower than they could */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5326 if (le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0200 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5327 && udev->speed == USB_SPEED_FULL ^1da177e4c3f41 Linus Torvalds 2005-04-16 5328 && highspeed_hubs != 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5329 check_highspeed(hub, udev, port1); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5330 fa286188ce0fce Greg Kroah-Hartman 2012-05-14 5331 /* Store the parent's children[] pointer. At this point ^1da177e4c3f41 Linus Torvalds 2005-04-16 5332 * udev becomes globally accessible, although presumably ^1da177e4c3f41 Linus Torvalds 2005-04-16 5333 * no one will look at it until hdev is unlocked. ^1da177e4c3f41 Linus Torvalds 2005-04-16 5334 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5335 status = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5336 d8521afe35862f Dan Williams 2014-05-20 5337 mutex_lock(&usb_port_peer_mutex); d8521afe35862f Dan Williams 2014-05-20 5338 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5339 /* We mustn't add new devices if the parent hub has ^1da177e4c3f41 Linus Torvalds 2005-04-16 5340 * been disconnected; we would race with the ^1da177e4c3f41 Linus Torvalds 2005-04-16 5341 * recursively_mark_NOTATTACHED() routine. ^1da177e4c3f41 Linus Torvalds 2005-04-16 5342 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5343 spin_lock_irq(&device_state_lock); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5344 if (hdev->state == USB_STATE_NOTATTACHED) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5345 status = -ENOTCONN; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5346 else d99f6b41308779 Dan Williams 2014-05-20 5347 port_dev->child = udev; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5348 spin_unlock_irq(&device_state_lock); d8521afe35862f Dan Williams 2014-05-20 5349 mutex_unlock(&usb_port_peer_mutex); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5350 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5351 /* Run it through the hoops (find a driver, etc) */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 5352 if (!status) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 5353 status = usb_new_device(udev); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5354 if (status) { d8521afe35862f Dan Williams 2014-05-20 5355 mutex_lock(&usb_port_peer_mutex); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5356 spin_lock_irq(&device_state_lock); d99f6b41308779 Dan Williams 2014-05-20 5357 port_dev->child = NULL; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5358 spin_unlock_irq(&device_state_lock); d8521afe35862f Dan Williams 2014-05-20 5359 mutex_unlock(&usb_port_peer_mutex); 01ed67dc70834d Tony Zheng 2014-10-17 5360 } else { 01ed67dc70834d Tony Zheng 2014-10-17 5361 if (hcd->usb_phy && !hdev->parent) 01ed67dc70834d Tony Zheng 2014-10-17 5362 usb_phy_notify_connect(hcd->usb_phy, 01ed67dc70834d Tony Zheng 2014-10-17 5363 udev->speed); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5364 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5365 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5366 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5367 if (status) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5368 goto loop_disable; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5369 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5370 status = hub_power_remaining(hub); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5371 if (status) d99f6b41308779 Dan Williams 2014-05-20 5372 dev_dbg(hub->intfdev, "%dmA power budget left\n", status); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5373 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5374 return; ^1da177e4c3f41 Linus Torvalds 2005-04-16 5375 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5376 loop_disable: ^1da177e4c3f41 Linus Torvalds 2005-04-16 5377 hub_port_disable(hub, port1, 1); ^1da177e4c3f41 Linus Torvalds 2005-04-16 5378 loop: fc721f5194dc98 Inaky Perez-Gonzalez 2008-04-08 5379 usb_ep0_reinit(udev); 3b29b68b162778 Alan Stern 2011-02-22 5380 release_devnum(udev); f7410ced7f931b Herbert Xu 2010-01-10 5381 hub_free_dev(udev); 0e162125abbf80 Mathias Nyman 2021-11-23 5382 if (retry_locked) { 0e162125abbf80 Mathias Nyman 2021-11-23 5383 mutex_unlock(hcd->address0_mutex); 0e162125abbf80 Mathias Nyman 2021-11-23 5384 usb_unlock_port(port_dev); 0e162125abbf80 Mathias Nyman 2021-11-23 5385 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5386 usb_put_dev(udev); ffcdc18d64d73e Vikram Pandita 2007-05-25 5387 if ((status == -ENOTCONN) || (status == -ENOTSUPP)) ^1da177e4c3f41 Linus Torvalds 2005-04-16 5388 break; 973593a960ddac Mike Looijmans 2017-11-09 5389 973593a960ddac Mike Looijmans 2017-11-09 5390 /* When halfway through our retry count, power-cycle the port */ 19502e6911e4ef Alan Stern 2020-09-28 5391 if (i == (PORT_INIT_TRIES - 1) / 2) { 973593a960ddac Mike Looijmans 2017-11-09 5392 dev_info(&port_dev->dev, "attempt power cycle\n"); 973593a960ddac Mike Looijmans 2017-11-09 5393 usb_hub_set_port_power(hdev, hub, port1, false); 973593a960ddac Mike Looijmans 2017-11-09 5394 msleep(2 * hub_power_on_good_delay(hub)); 973593a960ddac Mike Looijmans 2017-11-09 5395 usb_hub_set_port_power(hdev, hub, port1, true); 973593a960ddac Mike Looijmans 2017-11-09 5396 msleep(hub_power_on_good_delay(hub)); 973593a960ddac Mike Looijmans 2017-11-09 5397 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5398 } 3a31155cfff093 Alan Stern 2008-05-20 5399 if (hub->hdev->parent || 3a31155cfff093 Alan Stern 2008-05-20 5400 !hcd->driver->port_handed_over || e9e88fb7bca9f5 Alan Stern 2013-03-27 5401 !(hcd->driver->port_handed_over)(hcd, port1)) { e9e88fb7bca9f5 Alan Stern 2013-03-27 5402 if (status != -ENOTCONN && status != -ENODEV) d99f6b41308779 Dan Williams 2014-05-20 5403 dev_err(&port_dev->dev, d99f6b41308779 Dan Williams 2014-05-20 5404 "unable to enumerate USB device\n"); e9e88fb7bca9f5 Alan Stern 2013-03-27 5405 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5406 ^1da177e4c3f41 Linus Torvalds 2005-04-16 5407 done: ^1da177e4c3f41 Linus Torvalds 2005-04-16 5408 hub_port_disable(hub, port1, 1); 94c43b9897abf4 Alan Stern 2017-08-01 5409 if (hcd->driver->relinquish_port && !hub->hdev->parent) { 94c43b9897abf4 Alan Stern 2017-08-01 5410 if (status != -ENOTCONN && status != -ENODEV) 90da096ee46b68 Balaji Rao 2007-11-22 5411 hcd->driver->relinquish_port(hcd, port1); 94c43b9897abf4 Alan Stern 2017-08-01 5412 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5413 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 5414 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
