.. | .. |
---|
247 | 247 | */ |
---|
248 | 248 | tmp = buf + count; |
---|
249 | 249 | |
---|
250 | | - err = probe_kernel_read(tmp, mem, count); |
---|
| 250 | + err = copy_from_kernel_nofault(tmp, mem, count); |
---|
251 | 251 | if (err) |
---|
252 | 252 | return NULL; |
---|
253 | 253 | while (count > 0) { |
---|
.. | .. |
---|
283 | 283 | *tmp_raw |= hex_to_bin(*tmp_hex--) << 4; |
---|
284 | 284 | } |
---|
285 | 285 | |
---|
286 | | - return probe_kernel_write(mem, tmp_raw, count); |
---|
| 286 | + return copy_to_kernel_nofault(mem, tmp_raw, count); |
---|
287 | 287 | } |
---|
288 | 288 | |
---|
289 | 289 | /* |
---|
.. | .. |
---|
335 | 335 | size++; |
---|
336 | 336 | } |
---|
337 | 337 | |
---|
338 | | - return probe_kernel_write(mem, c, size); |
---|
| 338 | + return copy_to_kernel_nofault(mem, c, size); |
---|
339 | 339 | } |
---|
340 | 340 | |
---|
341 | 341 | #if DBG_MAX_REG_NUM > 0 |
---|
.. | .. |
---|
725 | 725 | } |
---|
726 | 726 | } |
---|
727 | 727 | |
---|
728 | | - do_each_thread(g, p) { |
---|
| 728 | + for_each_process_thread(g, p) { |
---|
729 | 729 | if (i >= ks->thr_query && !finished) { |
---|
730 | 730 | int_to_threadref(thref, p->pid); |
---|
731 | 731 | ptr = pack_threadid(ptr, thref); |
---|
.. | .. |
---|
735 | 735 | finished = 1; |
---|
736 | 736 | } |
---|
737 | 737 | i++; |
---|
738 | | - } while_each_thread(g, p); |
---|
| 738 | + } |
---|
739 | 739 | |
---|
740 | 740 | *(--ptr) = '\0'; |
---|
741 | 741 | break; |
---|
.. | .. |
---|
792 | 792 | } |
---|
793 | 793 | break; |
---|
794 | 794 | #endif |
---|
| 795 | +#ifdef CONFIG_HAVE_ARCH_KGDB_QXFER_PKT |
---|
| 796 | + case 'S': |
---|
| 797 | + if (!strncmp(remcom_in_buffer, "qSupported:", 11)) |
---|
| 798 | + strcpy(remcom_out_buffer, kgdb_arch_gdb_stub_feature); |
---|
| 799 | + break; |
---|
| 800 | + case 'X': |
---|
| 801 | + if (!strncmp(remcom_in_buffer, "qXfer:", 6)) |
---|
| 802 | + kgdb_arch_handle_qxfer_pkt(remcom_in_buffer, |
---|
| 803 | + remcom_out_buffer); |
---|
| 804 | + break; |
---|
| 805 | +#endif |
---|
| 806 | + default: |
---|
| 807 | + break; |
---|
795 | 808 | } |
---|
796 | 809 | } |
---|
797 | 810 | |
---|
.. | .. |
---|
1033 | 1046 | return DBG_PASS_EVENT; |
---|
1034 | 1047 | } |
---|
1035 | 1048 | #endif |
---|
| 1049 | + fallthrough; |
---|
1036 | 1050 | case 'C': /* Exception passing */ |
---|
1037 | 1051 | tmp = gdb_cmd_exception_pass(ks); |
---|
1038 | 1052 | if (tmp > 0) |
---|
1039 | 1053 | goto default_handle; |
---|
1040 | 1054 | if (tmp == 0) |
---|
1041 | 1055 | break; |
---|
1042 | | - /* Fall through on tmp < 0 */ |
---|
| 1056 | + fallthrough; /* on tmp < 0 */ |
---|
1043 | 1057 | case 'c': /* Continue packet */ |
---|
1044 | 1058 | case 's': /* Single step packet */ |
---|
1045 | 1059 | if (kgdb_contthread && kgdb_contthread != current) { |
---|
.. | .. |
---|
1047 | 1061 | error_packet(remcom_out_buffer, -EINVAL); |
---|
1048 | 1062 | break; |
---|
1049 | 1063 | } |
---|
1050 | | - dbg_activate_sw_breakpoints(); |
---|
1051 | | - /* Fall through to default processing */ |
---|
| 1064 | + fallthrough; /* to default processing */ |
---|
1052 | 1065 | default: |
---|
1053 | 1066 | default_handle: |
---|
1054 | 1067 | error = kgdb_arch_handle_exception(ks->ex_vector, |
---|
.. | .. |
---|
1094 | 1107 | return error; |
---|
1095 | 1108 | case 's': |
---|
1096 | 1109 | case 'c': |
---|
1097 | | - strcpy(remcom_in_buffer, cmd); |
---|
| 1110 | + strscpy(remcom_in_buffer, cmd, sizeof(remcom_in_buffer)); |
---|
1098 | 1111 | return 0; |
---|
1099 | 1112 | case '$': |
---|
1100 | | - strcpy(remcom_in_buffer, cmd); |
---|
| 1113 | + strscpy(remcom_in_buffer, cmd, sizeof(remcom_in_buffer)); |
---|
1101 | 1114 | gdbstub_use_prev_in_buf = strlen(remcom_in_buffer); |
---|
1102 | 1115 | gdbstub_prev_in_buf_pos = 0; |
---|
1103 | 1116 | return 0; |
---|