| .. | .. |
|---|
| 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; |
|---|