diff options
author | David S. Miller <davem@davemloft.net> | 2018-01-17 00:00:25 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-17 00:10:42 -0500 |
commit | c02b3741eb99a1ec733e6134c53ba59e43e19e97 (patch) | |
tree | ff7dd96c32dec2abe530e7101378443dabcb8962 /drivers/usb/mon/mon_bin.c | |
parent | 7018d1b3f20fb4308ed9bc577160cb8ffb79b62a (diff) | |
parent | 8cbab92dff778e516064c13113ca15d4869ec883 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Overlapping changes all over.
The mini-qdisc bits were a little bit tricky, however.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/usb/mon/mon_bin.c')
-rw-r--r-- | drivers/usb/mon/mon_bin.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c index f6ae753ab99b..f932f40302df 100644 --- a/drivers/usb/mon/mon_bin.c +++ b/drivers/usb/mon/mon_bin.c | |||
@@ -1004,7 +1004,9 @@ static long mon_bin_ioctl(struct file *file, unsigned int cmd, unsigned long arg | |||
1004 | break; | 1004 | break; |
1005 | 1005 | ||
1006 | case MON_IOCQ_RING_SIZE: | 1006 | case MON_IOCQ_RING_SIZE: |
1007 | mutex_lock(&rp->fetch_lock); | ||
1007 | ret = rp->b_size; | 1008 | ret = rp->b_size; |
1009 | mutex_unlock(&rp->fetch_lock); | ||
1008 | break; | 1010 | break; |
1009 | 1011 | ||
1010 | case MON_IOCT_RING_SIZE: | 1012 | case MON_IOCT_RING_SIZE: |
@@ -1231,12 +1233,16 @@ static int mon_bin_vma_fault(struct vm_fault *vmf) | |||
1231 | unsigned long offset, chunk_idx; | 1233 | unsigned long offset, chunk_idx; |
1232 | struct page *pageptr; | 1234 | struct page *pageptr; |
1233 | 1235 | ||
1236 | mutex_lock(&rp->fetch_lock); | ||
1234 | offset = vmf->pgoff << PAGE_SHIFT; | 1237 | offset = vmf->pgoff << PAGE_SHIFT; |
1235 | if (offset >= rp->b_size) | 1238 | if (offset >= rp->b_size) { |
1239 | mutex_unlock(&rp->fetch_lock); | ||
1236 | return VM_FAULT_SIGBUS; | 1240 | return VM_FAULT_SIGBUS; |
1241 | } | ||
1237 | chunk_idx = offset / CHUNK_SIZE; | 1242 | chunk_idx = offset / CHUNK_SIZE; |
1238 | pageptr = rp->b_vec[chunk_idx].pg; | 1243 | pageptr = rp->b_vec[chunk_idx].pg; |
1239 | get_page(pageptr); | 1244 | get_page(pageptr); |
1245 | mutex_unlock(&rp->fetch_lock); | ||
1240 | vmf->page = pageptr; | 1246 | vmf->page = pageptr; |
1241 | return 0; | 1247 | return 0; |
1242 | } | 1248 | } |