Project

General

Profile

Feature #3220

077: NOIO allocation under usb_lock

Added by Vadim Mutilin over 6 years ago. Updated over 4 years ago.

Status:
Open
Priority:
Normal
Assignee:
Start date:
07/17/2012
Due date:
% Done:

0%

Estimated time:
Published in build:

Description

Not disabling IO during memory allocation while holding a USB device lock

SUMMARY
You should use `GFP_NOIO` instead of `GFP_KERNEL` for memory allocations between `usb_lock_device()` and `usb_unlock_device()` invocations.

DESCRIPTION
Memory allocations with `GFP_KERNEL` flag can cause input/output operations to a storage
device. These operations can fail thus requiring to reset the device.

Therefore `GFP_KERNEL` cannot be safely used between `usb_lock_device()`
and `usb_unlock_device()` incovations. It should be replaced by `GFP_NOIO`.

LINKS
[Sample bugfix](http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=acbe2febe71abb2360b008e9ab3ee5c44169f78c)

EXAMPLE
The following drivers contain this error (in version 2.6.32):

  • `drivers/usb/core/devices.c`
  • `drivers/usb/core/message.c`

Related issues

Related to C Instrumentation Framework - Feature #3802: Add ability to refer to function argument by its name specified in aspect fileClosed2012-12-14

History

#1 Updated by Ilya Shchepetkov over 6 years ago

  • Subject changed from 077: NOIO allocation under usb_lock to 77_1: NOIO allocation under usb_lock
  • Status changed from New to Resolved

Completely redesigned model you can see in the commit 8f6d4d2 of 77_1a branch.

#2 Updated by Evgeny Novikov about 6 years ago

  • Status changed from Resolved to Open

Please, use ability to refer to function argument by its name specified in aspect file (implemented in #3802).

#3 Updated by Ilya Shchepetkov about 6 years ago

  • Status changed from Open to Resolved

The ability to refer to function argument by its name specified in aspect file was added in the commit b4b7331 of master branch.

Tests passed.

#4 Updated by Alexey Khoroshilov about 6 years ago

  • Subject changed from 77_1: NOIO allocation under usb_lock to 077_1: NOIO allocation under usb_lock
  • Description updated (diff)

#5 Updated by Vadim Mutilin over 5 years ago

  • Subject changed from 077_1: NOIO allocation under usb_lock to 077: NOIO allocation under usb_lock

#6 Updated by Vitaly Mordan over 4 years ago

Some functions in "before: ALLOC", "around: ALLOC_AROUND" and "before: ALLOC_WITHOUT" (for example, static inline void *kmalloc(.., gfp_t flags, ..) and static inline void *kzalloc(.., gfp_t flags, ..)) will always return 0, which makes some pathes in program infeasible.

#7 Updated by Evgeny Novikov over 4 years ago

  • Status changed from Resolved to Open
  • Assignee changed from Ilya Shchepetkov to Vitaly Mordan

Also available in: Atom PDF