.. | .. |
---|
| 1 | +// SPDX-License-Identifier: ISC |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (c) 2015,2017 Qualcomm Atheros, Inc. |
---|
3 | | - * Copyright (c) 2018, The Linux Foundation. All rights reserved. |
---|
4 | | - * |
---|
5 | | - * Permission to use, copy, modify, and/or distribute this software for any |
---|
6 | | - * purpose with or without fee is hereby granted, provided that the above |
---|
7 | | - * copyright notice and this permission notice appear in all copies. |
---|
8 | | - * |
---|
9 | | - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
---|
10 | | - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
---|
11 | | - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
---|
12 | | - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
---|
13 | | - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
---|
14 | | - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
---|
15 | | - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
---|
| 4 | + * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. |
---|
16 | 5 | */ |
---|
17 | 6 | |
---|
18 | 7 | #include "wil6210.h" |
---|
.. | .. |
---|
73 | 62 | return -EINVAL; |
---|
74 | 63 | } |
---|
75 | 64 | |
---|
76 | | - set_bit(wil_status_collecting_dumps, wil->status); |
---|
| 65 | + down_write(&wil->mem_lock); |
---|
| 66 | + |
---|
77 | 67 | if (test_bit(wil_status_suspending, wil->status) || |
---|
78 | | - test_bit(wil_status_suspended, wil->status) || |
---|
79 | | - test_bit(wil_status_resetting, wil->status)) { |
---|
80 | | - wil_err(wil, "cannot collect fw dump during suspend/reset\n"); |
---|
81 | | - clear_bit(wil_status_collecting_dumps, wil->status); |
---|
82 | | - return -EINVAL; |
---|
| 68 | + test_bit(wil_status_suspended, wil->status)) { |
---|
| 69 | + wil_err(wil, |
---|
| 70 | + "suspend/resume in progress. cannot copy crash dump\n"); |
---|
| 71 | + up_write(&wil->mem_lock); |
---|
| 72 | + return -EBUSY; |
---|
83 | 73 | } |
---|
84 | 74 | |
---|
85 | 75 | /* copy to crash dump area */ |
---|
.. | .. |
---|
101 | 91 | (const void __iomem * __force)data, len); |
---|
102 | 92 | } |
---|
103 | 93 | |
---|
104 | | - clear_bit(wil_status_collecting_dumps, wil->status); |
---|
| 94 | + up_write(&wil->mem_lock); |
---|
105 | 95 | |
---|
106 | 96 | return 0; |
---|
107 | 97 | } |
---|