.. | .. |
---|
1 | 1 | /* |
---|
2 | 2 | * SRAM protect-exec region helper functions |
---|
3 | 3 | * |
---|
4 | | - * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/ |
---|
| 4 | + * Copyright (C) 2017 Texas Instruments Incorporated - https://www.ti.com/ |
---|
5 | 5 | * Dave Gerlach |
---|
6 | 6 | * |
---|
7 | 7 | * This program is free software; you can redistribute it and/or modify |
---|
.. | .. |
---|
85 | 85 | unsigned long base; |
---|
86 | 86 | int pages; |
---|
87 | 87 | void *dst_cpy; |
---|
| 88 | + int ret; |
---|
88 | 89 | |
---|
89 | 90 | mutex_lock(&exec_pool_list_mutex); |
---|
90 | 91 | list_for_each_entry(p, &exec_pool_list, list) { |
---|
.. | .. |
---|
96 | 97 | if (!part) |
---|
97 | 98 | return NULL; |
---|
98 | 99 | |
---|
99 | | - if (!addr_in_gen_pool(pool, (unsigned long)dst, size)) |
---|
| 100 | + if (!gen_pool_has_addr(pool, (unsigned long)dst, size)) |
---|
100 | 101 | return NULL; |
---|
101 | 102 | |
---|
102 | 103 | base = (unsigned long)part->base; |
---|
.. | .. |
---|
104 | 105 | |
---|
105 | 106 | mutex_lock(&part->lock); |
---|
106 | 107 | |
---|
107 | | - set_memory_nx((unsigned long)base, pages); |
---|
108 | | - set_memory_rw((unsigned long)base, pages); |
---|
| 108 | + ret = set_memory_nx((unsigned long)base, pages); |
---|
| 109 | + if (ret) |
---|
| 110 | + goto error_out; |
---|
| 111 | + ret = set_memory_rw((unsigned long)base, pages); |
---|
| 112 | + if (ret) |
---|
| 113 | + goto error_out; |
---|
109 | 114 | |
---|
110 | 115 | dst_cpy = fncpy(dst, src, size); |
---|
111 | 116 | |
---|
112 | | - set_memory_ro((unsigned long)base, pages); |
---|
113 | | - set_memory_x((unsigned long)base, pages); |
---|
| 117 | + ret = set_memory_ro((unsigned long)base, pages); |
---|
| 118 | + if (ret) |
---|
| 119 | + goto error_out; |
---|
| 120 | + ret = set_memory_x((unsigned long)base, pages); |
---|
| 121 | + if (ret) |
---|
| 122 | + goto error_out; |
---|
114 | 123 | |
---|
115 | 124 | mutex_unlock(&part->lock); |
---|
116 | 125 | |
---|
117 | 126 | return dst_cpy; |
---|
| 127 | + |
---|
| 128 | +error_out: |
---|
| 129 | + mutex_unlock(&part->lock); |
---|
| 130 | + return NULL; |
---|
118 | 131 | } |
---|
119 | 132 | EXPORT_SYMBOL_GPL(sram_exec_copy); |
---|