diff options
author | James Morris <jmorris@namei.org> | 2009-02-05 19:01:45 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-02-05 19:01:45 -0500 |
commit | cb5629b10d64a8006622ce3a52bc887d91057d69 (patch) | |
tree | 7c06d8f30783115e3384721046258ce615b129c5 /Documentation/usb | |
parent | 8920d5ad6ba74ae8ab020e90cc4d976980e68701 (diff) | |
parent | f01d1d546abb2f4028b5299092f529eefb01253a (diff) |
Merge branch 'master' into next
Conflicts:
fs/namei.c
Manually merged per:
diff --cc fs/namei.c
index 734f2b5,bbc15c2..0000000
--- a/fs/namei.c
+++ b/fs/namei.c
@@@ -860,9 -848,8 +849,10 @@@ static int __link_path_walk(const char
nd->flags |= LOOKUP_CONTINUE;
err = exec_permission_lite(inode);
if (err == -EAGAIN)
- err = vfs_permission(nd, MAY_EXEC);
+ err = inode_permission(nd->path.dentry->d_inode,
+ MAY_EXEC);
+ if (!err)
+ err = ima_path_check(&nd->path, MAY_EXEC);
if (err)
break;
@@@ -1525,14 -1506,9 +1509,14 @@@ int may_open(struct path *path, int acc
flag &= ~O_TRUNC;
}
- error = vfs_permission(nd, acc_mode);
+ error = inode_permission(inode, acc_mode);
if (error)
return error;
+
- error = ima_path_check(&nd->path,
++ error = ima_path_check(path,
+ acc_mode & (MAY_READ | MAY_WRITE | MAY_EXEC));
+ if (error)
+ return error;
/*
* An append-only file must be opened in append mode for writing.
*/
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'Documentation/usb')
-rw-r--r-- | Documentation/usb/dma.txt | 11 | ||||
-rw-r--r-- | Documentation/usb/power-management.txt | 22 | ||||
-rw-r--r-- | Documentation/usb/wusb-cbaf | 9 |
3 files changed, 23 insertions, 19 deletions
diff --git a/Documentation/usb/dma.txt b/Documentation/usb/dma.txt index e8b50b7de9d9..cfdcd16e3abf 100644 --- a/Documentation/usb/dma.txt +++ b/Documentation/usb/dma.txt | |||
@@ -6,8 +6,9 @@ in the kernel usb programming guide (kerneldoc, from the source code). | |||
6 | API OVERVIEW | 6 | API OVERVIEW |
7 | 7 | ||
8 | The big picture is that USB drivers can continue to ignore most DMA issues, | 8 | The big picture is that USB drivers can continue to ignore most DMA issues, |
9 | though they still must provide DMA-ready buffers (see DMA-mapping.txt). | 9 | though they still must provide DMA-ready buffers (see |
10 | That's how they've worked through the 2.4 (and earlier) kernels. | 10 | Documentation/PCI/PCI-DMA-mapping.txt). That's how they've worked through |
11 | the 2.4 (and earlier) kernels. | ||
11 | 12 | ||
12 | OR: they can now be DMA-aware. | 13 | OR: they can now be DMA-aware. |
13 | 14 | ||
@@ -62,8 +63,8 @@ and effects like cache-trashing can impose subtle penalties. | |||
62 | force a consistent memory access ordering by using memory barriers. It's | 63 | force a consistent memory access ordering by using memory barriers. It's |
63 | not using a streaming DMA mapping, so it's good for small transfers on | 64 | not using a streaming DMA mapping, so it's good for small transfers on |
64 | systems where the I/O would otherwise thrash an IOMMU mapping. (See | 65 | systems where the I/O would otherwise thrash an IOMMU mapping. (See |
65 | Documentation/DMA-mapping.txt for definitions of "coherent" and "streaming" | 66 | Documentation/PCI/PCI-DMA-mapping.txt for definitions of "coherent" and |
66 | DMA mappings.) | 67 | "streaming" DMA mappings.) |
67 | 68 | ||
68 | Asking for 1/Nth of a page (as well as asking for N pages) is reasonably | 69 | Asking for 1/Nth of a page (as well as asking for N pages) is reasonably |
69 | space-efficient. | 70 | space-efficient. |
@@ -93,7 +94,7 @@ WORKING WITH EXISTING BUFFERS | |||
93 | Existing buffers aren't usable for DMA without first being mapped into the | 94 | Existing buffers aren't usable for DMA without first being mapped into the |
94 | DMA address space of the device. However, most buffers passed to your | 95 | DMA address space of the device. However, most buffers passed to your |
95 | driver can safely be used with such DMA mapping. (See the first section | 96 | driver can safely be used with such DMA mapping. (See the first section |
96 | of DMA-mapping.txt, titled "What memory is DMA-able?") | 97 | of Documentation/PCI/PCI-DMA-mapping.txt, titled "What memory is DMA-able?") |
97 | 98 | ||
98 | - When you're using scatterlists, you can map everything at once. On some | 99 | - When you're using scatterlists, you can map everything at once. On some |
99 | systems, this kicks in an IOMMU and turns the scatterlists into single | 100 | systems, this kicks in an IOMMU and turns the scatterlists into single |
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt index e48ea1d51010..ad642615ad4c 100644 --- a/Documentation/usb/power-management.txt +++ b/Documentation/usb/power-management.txt | |||
@@ -313,11 +313,13 @@ three of the methods listed above. In addition, a driver indicates | |||
313 | that it supports autosuspend by setting the .supports_autosuspend flag | 313 | that it supports autosuspend by setting the .supports_autosuspend flag |
314 | in its usb_driver structure. It is then responsible for informing the | 314 | in its usb_driver structure. It is then responsible for informing the |
315 | USB core whenever one of its interfaces becomes busy or idle. The | 315 | USB core whenever one of its interfaces becomes busy or idle. The |
316 | driver does so by calling these three functions: | 316 | driver does so by calling these five functions: |
317 | 317 | ||
318 | int usb_autopm_get_interface(struct usb_interface *intf); | 318 | int usb_autopm_get_interface(struct usb_interface *intf); |
319 | void usb_autopm_put_interface(struct usb_interface *intf); | 319 | void usb_autopm_put_interface(struct usb_interface *intf); |
320 | int usb_autopm_set_interface(struct usb_interface *intf); | 320 | int usb_autopm_set_interface(struct usb_interface *intf); |
321 | int usb_autopm_get_interface_async(struct usb_interface *intf); | ||
322 | void usb_autopm_put_interface_async(struct usb_interface *intf); | ||
321 | 323 | ||
322 | The functions work by maintaining a counter in the usb_interface | 324 | The functions work by maintaining a counter in the usb_interface |
323 | structure. When intf->pm_usage_count is > 0 then the interface is | 325 | structure. When intf->pm_usage_count is > 0 then the interface is |
@@ -330,10 +332,12 @@ associated with the device itself rather than any of its interfaces. | |||
330 | This field is used only by the USB core.) | 332 | This field is used only by the USB core.) |
331 | 333 | ||
332 | The driver owns intf->pm_usage_count; it can modify the value however | 334 | The driver owns intf->pm_usage_count; it can modify the value however |
333 | and whenever it likes. A nice aspect of the usb_autopm_* routines is | 335 | and whenever it likes. A nice aspect of the non-async usb_autopm_* |
334 | that the changes they make are protected by the usb_device structure's | 336 | routines is that the changes they make are protected by the usb_device |
335 | PM mutex (udev->pm_mutex); however drivers may change pm_usage_count | 337 | structure's PM mutex (udev->pm_mutex); however drivers may change |
336 | without holding the mutex. | 338 | pm_usage_count without holding the mutex. Drivers using the async |
339 | routines are responsible for their own synchronization and mutual | ||
340 | exclusion. | ||
337 | 341 | ||
338 | usb_autopm_get_interface() increments pm_usage_count and | 342 | usb_autopm_get_interface() increments pm_usage_count and |
339 | attempts an autoresume if the new value is > 0 and the | 343 | attempts an autoresume if the new value is > 0 and the |
@@ -348,6 +352,14 @@ without holding the mutex. | |||
348 | is suspended, and it attempts an autosuspend if the value is | 352 | is suspended, and it attempts an autosuspend if the value is |
349 | <= 0 and the device isn't suspended. | 353 | <= 0 and the device isn't suspended. |
350 | 354 | ||
355 | usb_autopm_get_interface_async() and | ||
356 | usb_autopm_put_interface_async() do almost the same things as | ||
357 | their non-async counterparts. The differences are: they do | ||
358 | not acquire the PM mutex, and they use a workqueue to do their | ||
359 | jobs. As a result they can be called in an atomic context, | ||
360 | such as an URB's completion handler, but when they return the | ||
361 | device will not generally not yet be in the desired state. | ||
362 | |||
351 | There also are a couple of utility routines drivers can use: | 363 | There also are a couple of utility routines drivers can use: |
352 | 364 | ||
353 | usb_autopm_enable() sets pm_usage_cnt to 0 and then calls | 365 | usb_autopm_enable() sets pm_usage_cnt to 0 and then calls |
diff --git a/Documentation/usb/wusb-cbaf b/Documentation/usb/wusb-cbaf index 2e78b70f3adc..426ddaaef96f 100644 --- a/Documentation/usb/wusb-cbaf +++ b/Documentation/usb/wusb-cbaf | |||
@@ -80,12 +80,6 @@ case $1 in | |||
80 | start) | 80 | start) |
81 | for dev in ${2:-$hdevs} | 81 | for dev in ${2:-$hdevs} |
82 | do | 82 | do |
83 | uwb_rc=$(readlink -f $dev/uwb_rc) | ||
84 | if cat $uwb_rc/beacon | grep -q -- "-1" | ||
85 | then | ||
86 | echo 13 0 > $uwb_rc/beacon | ||
87 | echo I: started beaconing on ch 13 on $(basename $uwb_rc) >&2 | ||
88 | fi | ||
89 | echo $host_CHID > $dev/wusb_chid | 83 | echo $host_CHID > $dev/wusb_chid |
90 | echo I: started host $(basename $dev) >&2 | 84 | echo I: started host $(basename $dev) >&2 |
91 | done | 85 | done |
@@ -95,9 +89,6 @@ case $1 in | |||
95 | do | 89 | do |
96 | echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > $dev/wusb_chid | 90 | echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > $dev/wusb_chid |
97 | echo I: stopped host $(basename $dev) >&2 | 91 | echo I: stopped host $(basename $dev) >&2 |
98 | uwb_rc=$(readlink -f $dev/uwb_rc) | ||
99 | echo -1 | cat > $uwb_rc/beacon | ||
100 | echo I: stopped beaconing on $(basename $uwb_rc) >&2 | ||
101 | done | 92 | done |
102 | ;; | 93 | ;; |
103 | set-chid) | 94 | set-chid) |