diff options
Diffstat (limited to 'lib/dma-debug.c')
| -rw-r--r-- | lib/dma-debug.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/dma-debug.c b/lib/dma-debug.c index b8a61ff08544..9561825c14a4 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c | |||
| @@ -501,8 +501,8 @@ out_err: | |||
| 501 | static ssize_t filter_read(struct file *file, char __user *user_buf, | 501 | static ssize_t filter_read(struct file *file, char __user *user_buf, |
| 502 | size_t count, loff_t *ppos) | 502 | size_t count, loff_t *ppos) |
| 503 | { | 503 | { |
| 504 | unsigned long flags; | ||
| 505 | char buf[NAME_MAX_LEN + 1]; | 504 | char buf[NAME_MAX_LEN + 1]; |
| 505 | unsigned long flags; | ||
| 506 | int len; | 506 | int len; |
| 507 | 507 | ||
| 508 | if (!current_driver_name[0]) | 508 | if (!current_driver_name[0]) |
| @@ -523,9 +523,9 @@ static ssize_t filter_read(struct file *file, char __user *user_buf, | |||
| 523 | static ssize_t filter_write(struct file *file, const char __user *userbuf, | 523 | static ssize_t filter_write(struct file *file, const char __user *userbuf, |
| 524 | size_t count, loff_t *ppos) | 524 | size_t count, loff_t *ppos) |
| 525 | { | 525 | { |
| 526 | unsigned long flags; | ||
| 527 | char buf[NAME_MAX_LEN]; | 526 | char buf[NAME_MAX_LEN]; |
| 528 | size_t len = NAME_MAX_LEN - 1; | 527 | unsigned long flags; |
| 528 | size_t len; | ||
| 529 | int i; | 529 | int i; |
| 530 | 530 | ||
| 531 | /* | 531 | /* |
| @@ -534,7 +534,7 @@ static ssize_t filter_write(struct file *file, const char __user *userbuf, | |||
| 534 | * disabled. Since copy_from_user can fault and may sleep we | 534 | * disabled. Since copy_from_user can fault and may sleep we |
| 535 | * need to copy to temporary buffer first | 535 | * need to copy to temporary buffer first |
| 536 | */ | 536 | */ |
| 537 | len = min(count, len); | 537 | len = min(count, NAME_MAX_LEN - 1); |
| 538 | if (copy_from_user(buf, userbuf, len)) | 538 | if (copy_from_user(buf, userbuf, len)) |
| 539 | return -EFAULT; | 539 | return -EFAULT; |
| 540 | 540 | ||
| @@ -1040,18 +1040,19 @@ EXPORT_SYMBOL(debug_dma_map_sg); | |||
| 1040 | 1040 | ||
| 1041 | static int get_nr_mapped_entries(struct device *dev, struct scatterlist *s) | 1041 | static int get_nr_mapped_entries(struct device *dev, struct scatterlist *s) |
| 1042 | { | 1042 | { |
| 1043 | struct dma_debug_entry *entry; | 1043 | struct dma_debug_entry *entry, ref; |
| 1044 | struct hash_bucket *bucket; | 1044 | struct hash_bucket *bucket; |
| 1045 | unsigned long flags; | 1045 | unsigned long flags; |
| 1046 | int mapped_ents = 0; | 1046 | int mapped_ents; |
| 1047 | struct dma_debug_entry ref; | ||
| 1048 | 1047 | ||
| 1049 | ref.dev = dev; | 1048 | ref.dev = dev; |
| 1050 | ref.dev_addr = sg_dma_address(s); | 1049 | ref.dev_addr = sg_dma_address(s); |
| 1051 | ref.size = sg_dma_len(s), | 1050 | ref.size = sg_dma_len(s), |
| 1051 | |||
| 1052 | bucket = get_hash_bucket(&ref, &flags); | ||
| 1053 | entry = hash_bucket_find(bucket, &ref); | ||
| 1054 | mapped_ents = 0; | ||
| 1052 | 1055 | ||
| 1053 | bucket = get_hash_bucket(&ref, &flags); | ||
| 1054 | entry = hash_bucket_find(bucket, &ref); | ||
| 1055 | if (entry) | 1056 | if (entry) |
| 1056 | mapped_ents = entry->sg_mapped_ents; | 1057 | mapped_ents = entry->sg_mapped_ents; |
| 1057 | put_hash_bucket(bucket, &flags); | 1058 | put_hash_bucket(bucket, &flags); |
