Advertisement
Guest User

Untitled

a guest
Feb 27th, 2018
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 88.57 KB | None | 0 0
  1. commit af8b38f03e0de179cf3efd07f9760512c877f142
  2. Author: Arnd Bergmann <arnd@arndb.de>
  3. Date: Tue Feb 27 22:25:46 2018 +0100
  4.  
  5. gcc-8: work around stringop-truncation warnings
  6.  
  7. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
  8.  
  9. diff --git a/arch/x86/platform/intel-mid/sfi.c b/arch/x86/platform/intel-mid/sfi.c
  10. index 7be1e1fe9ae3..fde6e8784a9b 100644
  11. --- a/arch/x86/platform/intel-mid/sfi.c
  12. +++ b/arch/x86/platform/intel-mid/sfi.c
  13. @@ -427,7 +427,7 @@ static void __init sfi_handle_sd_dev(struct sfi_device_table_entry *pentry,
  14. void *pdata;
  15.  
  16. memset(&sd_info, 0, sizeof(sd_info));
  17. - strncpy(sd_info.name, pentry->name, SFI_NAME_LEN);
  18. + strncpy(sd_info.name, pentry->name, SFI_NAME_LEN - 1);
  19. sd_info.bus_num = pentry->host_num;
  20. sd_info.max_clk = pentry->max_freq;
  21. sd_info.addr = pentry->addr;
  22. diff --git a/block/partitions/ldm.c b/block/partitions/ldm.c
  23. index 2a365c756648..ab3ba7b5d282 100644
  24. --- a/block/partitions/ldm.c
  25. +++ b/block/partitions/ldm.c
  26. @@ -145,7 +145,7 @@ static bool ldm_parse_tocblock (const u8 *data, struct tocblock *toc)
  27. ldm_crit ("Cannot find TOCBLOCK, database may be corrupt.");
  28. return false;
  29. }
  30. - strncpy (toc->bitmap1_name, data + 0x24, sizeof (toc->bitmap1_name));
  31. + strncpy (toc->bitmap1_name, data + 0x24, sizeof (toc->bitmap1_name) - 1);
  32. toc->bitmap1_name[sizeof (toc->bitmap1_name) - 1] = 0;
  33. toc->bitmap1_start = get_unaligned_be64(data + 0x2E);
  34. toc->bitmap1_size = get_unaligned_be64(data + 0x36);
  35. @@ -156,7 +156,7 @@ static bool ldm_parse_tocblock (const u8 *data, struct tocblock *toc)
  36. TOC_BITMAP1, toc->bitmap1_name);
  37. return false;
  38. }
  39. - strncpy (toc->bitmap2_name, data + 0x46, sizeof (toc->bitmap2_name));
  40. + strncpy (toc->bitmap2_name, data + 0x46, sizeof (toc->bitmap2_name) - 1);
  41. toc->bitmap2_name[sizeof (toc->bitmap2_name) - 1] = 0;
  42. toc->bitmap2_start = get_unaligned_be64(data + 0x50);
  43. toc->bitmap2_size = get_unaligned_be64(data + 0x58);
  44. diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c
  45. index d880a4897159..c34c19fbb894 100644
  46. --- a/crypto/ablkcipher.c
  47. +++ b/crypto/ablkcipher.c
  48. @@ -370,8 +370,8 @@ static int crypto_ablkcipher_report(struct sk_buff *skb, struct crypto_alg *alg)
  49. {
  50. struct crypto_report_blkcipher rblkcipher;
  51.  
  52. - strncpy(rblkcipher.type, "ablkcipher", sizeof(rblkcipher.type));
  53. - strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "<default>",
  54. + strscpy(rblkcipher.type, "ablkcipher", sizeof(rblkcipher.type));
  55. + strscpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "<default>",
  56. sizeof(rblkcipher.geniv));
  57.  
  58. rblkcipher.blocksize = alg->cra_blocksize;
  59. @@ -444,8 +444,8 @@ static int crypto_givcipher_report(struct sk_buff *skb, struct crypto_alg *alg)
  60. {
  61. struct crypto_report_blkcipher rblkcipher;
  62.  
  63. - strncpy(rblkcipher.type, "givcipher", sizeof(rblkcipher.type));
  64. - strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "<built-in>",
  65. + strscpy(rblkcipher.type, "givcipher", sizeof(rblkcipher.type));
  66. + strscpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "<built-in>",
  67. sizeof(rblkcipher.geniv));
  68.  
  69. rblkcipher.blocksize = alg->cra_blocksize;
  70. diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c
  71. index 01c0d4aa2563..e5838ff0612c 100644
  72. --- a/crypto/blkcipher.c
  73. +++ b/crypto/blkcipher.c
  74. @@ -509,8 +509,8 @@ static int crypto_blkcipher_report(struct sk_buff *skb, struct crypto_alg *alg)
  75. {
  76. struct crypto_report_blkcipher rblkcipher;
  77.  
  78. - strncpy(rblkcipher.type, "blkcipher", sizeof(rblkcipher.type));
  79. - strncpy(rblkcipher.geniv, alg->cra_blkcipher.geniv ?: "<default>",
  80. + strscpy(rblkcipher.type, "blkcipher", sizeof(rblkcipher.type));
  81. + strscpy(rblkcipher.geniv, alg->cra_blkcipher.geniv ?: "<default>",
  82. sizeof(rblkcipher.geniv));
  83.  
  84. rblkcipher.blocksize = alg->cra_blocksize;
  85. diff --git a/drivers/auxdisplay/panel.c b/drivers/auxdisplay/panel.c
  86. index ea7869c0d7f9..8628e94cb3ac 100644
  87. --- a/drivers/auxdisplay/panel.c
  88. +++ b/drivers/auxdisplay/panel.c
  89. @@ -160,9 +160,9 @@ struct logical_input {
  90. } std;
  91. struct { /* valid when type == INPUT_TYPE_KBD */
  92. /* strings can be non null-terminated */
  93. - char press_str[sizeof(void *) + sizeof(int)];
  94. - char repeat_str[sizeof(void *) + sizeof(int)];
  95. - char release_str[sizeof(void *) + sizeof(int)];
  96. + char press_str[sizeof(void *) + sizeof(int)] __nonstring;
  97. + char repeat_str[sizeof(void *) + sizeof(int)] __nonstring;
  98. + char release_str[sizeof(void *) + sizeof(int)] __nonstring;
  99. } kbd;
  100. } u;
  101. };
  102. diff --git a/drivers/crypto/ccp/ccp-crypto-sha.c b/drivers/crypto/ccp/ccp-crypto-sha.c
  103. index 8b9b16d433f7..fcd5da6b09e8 100644
  104. --- a/drivers/crypto/ccp/ccp-crypto-sha.c
  105. +++ b/drivers/crypto/ccp/ccp-crypto-sha.c
  106. @@ -436,7 +436,7 @@ static int ccp_register_hmac_alg(struct list_head *head,
  107. *ccp_alg = *base_alg;
  108. INIT_LIST_HEAD(&ccp_alg->entry);
  109.  
  110. - strncpy(ccp_alg->child_alg, def->name, CRYPTO_MAX_ALG_NAME);
  111. + strscpy(ccp_alg->child_alg, def->name, CRYPTO_MAX_ALG_NAME);
  112.  
  113. alg = &ccp_alg->alg;
  114. alg->setkey = ccp_sha_setkey;
  115. diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
  116. index fe2af6aa88fc..98fa846236f0 100644
  117. --- a/drivers/devfreq/devfreq.c
  118. +++ b/drivers/devfreq/devfreq.c
  119. @@ -590,7 +590,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
  120. devfreq->dev.class = devfreq_class;
  121. devfreq->dev.release = devfreq_dev_release;
  122. devfreq->profile = profile;
  123. - strncpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN);
  124. + strscpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN);
  125. devfreq->previous_freq = profile->initial_freq;
  126. devfreq->last_status.current_frequency = profile->initial_freq;
  127. devfreq->data = data;
  128. diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
  129. index b7254a29b34a..bb849c33dde1 100644
  130. --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
  131. +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
  132. @@ -2204,7 +2204,7 @@ static void fill_audio_info(struct audio_info *audio_info,
  133.  
  134. cea_revision = drm_connector->display_info.cea_rev;
  135.  
  136. - strncpy(audio_info->display_name,
  137. + strscpy(audio_info->display_name,
  138. edid_caps->display_name,
  139. AUDIO_INFO_DISPLAY_NAME_SIZE_IN_CHARS - 1);
  140.  
  141. @@ -3273,7 +3273,7 @@ amdgpu_dm_create_common_mode(struct drm_encoder *encoder,
  142. mode->hdisplay = hdisplay;
  143. mode->vdisplay = vdisplay;
  144. mode->type &= ~DRM_MODE_TYPE_PREFERRED;
  145. - strncpy(mode->name, name, DRM_DISPLAY_MODE_LEN);
  146. + strscpy(mode->name, name, DRM_DISPLAY_MODE_LEN);
  147.  
  148. return mode;
  149.  
  150. diff --git a/drivers/gpu/drm/drm_property.c b/drivers/gpu/drm/drm_property.c
  151. index bae50e6b819d..e7acaa106db5 100644
  152. --- a/drivers/gpu/drm/drm_property.c
  153. +++ b/drivers/gpu/drm/drm_property.c
  154. @@ -99,10 +99,8 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  155. property->num_values = num_values;
  156. INIT_LIST_HEAD(&property->enum_list);
  157.  
  158. - if (name) {
  159. - strncpy(property->name, name, DRM_PROP_NAME_LEN);
  160. - property->name[DRM_PROP_NAME_LEN-1] = '\0';
  161. - }
  162. + if (name)
  163. + strscpy(property->name, name, DRM_PROP_NAME_LEN);
  164.  
  165. list_add_tail(&property->head, &dev->mode_config.property_list);
  166.  
  167. @@ -389,8 +387,7 @@ int drm_property_add_enum(struct drm_property *property, int index,
  168. if (!list_empty(&property->enum_list)) {
  169. list_for_each_entry(prop_enum, &property->enum_list, head) {
  170. if (prop_enum->value == value) {
  171. - strncpy(prop_enum->name, name, DRM_PROP_NAME_LEN);
  172. - prop_enum->name[DRM_PROP_NAME_LEN-1] = '\0';
  173. + strscpy(prop_enum->name, name, DRM_PROP_NAME_LEN);
  174. return 0;
  175. }
  176. }
  177. @@ -400,8 +397,7 @@ int drm_property_add_enum(struct drm_property *property, int index,
  178. if (!prop_enum)
  179. return -ENOMEM;
  180.  
  181. - strncpy(prop_enum->name, name, DRM_PROP_NAME_LEN);
  182. - prop_enum->name[DRM_PROP_NAME_LEN-1] = '\0';
  183. + strscpy(prop_enum->name, name, DRM_PROP_NAME_LEN);
  184. prop_enum->value = value;
  185.  
  186. property->values[index] = value;
  187. diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
  188. index 885fc3809f7f..51c6e96adb0b 100644
  189. --- a/drivers/gpu/drm/i915/intel_tv.c
  190. +++ b/drivers/gpu/drm/i915/intel_tv.c
  191. @@ -1347,7 +1347,7 @@ intel_tv_get_modes(struct drm_connector *connector)
  192. mode_ptr = drm_mode_create(connector->dev);
  193. if (!mode_ptr)
  194. continue;
  195. - strncpy(mode_ptr->name, input->name, DRM_DISPLAY_MODE_LEN);
  196. + strscpy(mode_ptr->name, input->name, DRM_DISPLAY_MODE_LEN);
  197. mode_ptr->name[DRM_DISPLAY_MODE_LEN - 1] = '\0';
  198.  
  199. mode_ptr->hdisplay = hactive_s;
  200. diff --git a/drivers/gpu/drm/msm/msm_fence.c b/drivers/gpu/drm/msm/msm_fence.c
  201. index 349c12f670eb..52a576b763c1 100644
  202. --- a/drivers/gpu/drm/msm/msm_fence.c
  203. +++ b/drivers/gpu/drm/msm/msm_fence.c
  204. @@ -31,7 +31,7 @@ msm_fence_context_alloc(struct drm_device *dev, const char *name)
  205. return ERR_PTR(-ENOMEM);
  206.  
  207. fctx->dev = dev;
  208. - strncpy(fctx->name, name, sizeof(fctx->name));
  209. + strscpy(fctx->name, name, sizeof(fctx->name));
  210. fctx->context = dma_fence_context_alloc(1);
  211. init_waitqueue_head(&fctx->event);
  212. spin_lock_init(&fctx->spinlock);
  213. diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
  214. index 2740278d226b..22c47a253b0a 100644
  215. --- a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
  216. +++ b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
  217. @@ -35,8 +35,8 @@ struct nv_device_info_v0 {
  218. __u8 pad06[2];
  219. __u64 ram_size;
  220. __u64 ram_user;
  221. - char chip[16];
  222. - char name[64];
  223. + char chip[16] __nonstring;
  224. + char name[64] __nonstring;
  225. };
  226.  
  227. struct nv_device_time_v0 {
  228. diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0000.h b/drivers/gpu/drm/nouveau/include/nvif/if0000.h
  229. index 30ecd31db5df..05c257c4b8e3 100644
  230. --- a/drivers/gpu/drm/nouveau/include/nvif/if0000.h
  231. +++ b/drivers/gpu/drm/nouveau/include/nvif/if0000.h
  232. @@ -6,7 +6,7 @@ struct nvif_client_v0 {
  233. __u8 version;
  234. __u8 pad01[7];
  235. __u64 device;
  236. - char name[32];
  237. + char name[32] __attribute__((nonstring));
  238. };
  239.  
  240. #define NVIF_CLIENT_V0_DEVLIST 0x00
  241. diff --git a/drivers/gpu/drm/panel/panel-arm-versatile.c b/drivers/gpu/drm/panel/panel-arm-versatile.c
  242. index b428c4678106..417286b0e6a3 100644
  243. --- a/drivers/gpu/drm/panel/panel-arm-versatile.c
  244. +++ b/drivers/gpu/drm/panel/panel-arm-versatile.c
  245. @@ -264,7 +264,7 @@ static int versatile_panel_get_modes(struct drm_panel *panel)
  246. struct versatile_panel *vpanel = to_versatile_panel(panel);
  247. struct drm_display_mode *mode;
  248.  
  249. - strncpy(connector->display_info.name, vpanel->panel_type->name,
  250. + strscpy(connector->display_info.name, vpanel->panel_type->name,
  251. DRM_DISPLAY_INFO_LEN);
  252. connector->display_info.width_mm = vpanel->panel_type->width_mm;
  253. connector->display_info.height_mm = vpanel->panel_type->height_mm;
  254. diff --git a/drivers/ide/qd65xx.c b/drivers/ide/qd65xx.c
  255. index a6fb6a894c7b..ad72676fd9e6 100644
  256. --- a/drivers/ide/qd65xx.c
  257. +++ b/drivers/ide/qd65xx.c
  258. @@ -157,7 +157,7 @@ static int qd_find_disk_type (ide_drive_t *drive,
  259. if (*m == 0)
  260. return 0;
  261.  
  262. - strncpy(model, m, ATA_ID_PROD_LEN);
  263. + strscpy(model, m, ATA_ID_PROD_LEN);
  264. ide_fixstring(model, ATA_ID_PROD_LEN, 1); /* byte-swap */
  265.  
  266. for (p = qd65xx_timing ; p->offset != -1 ; p++) {
  267. diff --git a/drivers/iio/pressure/st_pressure_i2c.c b/drivers/iio/pressure/st_pressure_i2c.c
  268. index fbb59059e942..619c20626cd4 100644
  269. --- a/drivers/iio/pressure/st_pressure_i2c.c
  270. +++ b/drivers/iio/pressure/st_pressure_i2c.c
  271. @@ -94,9 +94,8 @@ static int st_press_i2c_probe(struct i2c_client *client,
  272. if ((ret < 0) || (ret >= ST_PRESS_MAX))
  273. return -ENODEV;
  274.  
  275. - strncpy(client->name, st_press_id_table[ret].name,
  276. + strscpy(client->name, st_press_id_table[ret].name,
  277. sizeof(client->name));
  278. - client->name[sizeof(client->name) - 1] = '\0';
  279. } else if (!id)
  280. return -ENODEV;
  281.  
  282. diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c
  283. index 471d55c50066..7d5036be36b1 100644
  284. --- a/drivers/infiniband/hw/hfi1/verbs.c
  285. +++ b/drivers/infiniband/hw/hfi1/verbs.c
  286. @@ -1883,7 +1883,7 @@ int hfi1_register_ib_device(struct hfi1_devdata *dd)
  287. ibdev->process_mad = hfi1_process_mad;
  288. ibdev->get_dev_fw_str = hfi1_get_dev_fw_str;
  289.  
  290. - strncpy(ibdev->node_desc, init_utsname()->nodename,
  291. + strscpy(ibdev->node_desc, init_utsname()->nodename,
  292. sizeof(ibdev->node_desc));
  293.  
  294. /*
  295. diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
  296. index 9904918589a4..93c6deaf94c2 100644
  297. --- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
  298. +++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c
  299. @@ -1365,7 +1365,7 @@ static int ocrdma_mbx_get_ctrl_attribs(struct ocrdma_dev *dev)
  300. dev->hba_port_num = (hba_attribs->ptpnum_maxdoms_hbast_cv &
  301. OCRDMA_HBA_ATTRB_PTNUM_MASK)
  302. >> OCRDMA_HBA_ATTRB_PTNUM_SHIFT;
  303. - strncpy(dev->model_number,
  304. + strscpy(dev->model_number,
  305. hba_attribs->controller_model_number, 31);
  306. }
  307. dma_free_coherent(&dev->nic_info.pdev->dev, dma.size, dma.va, dma.pa);
  308. diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
  309. index 49fef08858c5..f3e5df9effdc 100644
  310. --- a/drivers/isdn/capi/capidrv.c
  311. +++ b/drivers/isdn/capi/capidrv.c
  312. @@ -1796,7 +1796,7 @@ static int capidrv_command(isdn_ctrl *c, capidrv_contr *card)
  313.  
  314. switch (c->command) {
  315. case ISDN_CMD_DIAL: {
  316. - u8 calling[ISDN_MSNLEN + 3];
  317. + char calling[ISDN_MSNLEN + 3] __nonstring;
  318. u8 called[ISDN_MSNLEN + 2];
  319.  
  320. if (debugmode)
  321. @@ -1824,8 +1824,8 @@ static int capidrv_command(isdn_ctrl *c, capidrv_contr *card)
  322. bchan->si1 = c->parm.setup.si1;
  323. bchan->si2 = c->parm.setup.si2;
  324.  
  325. - strncpy(bchan->num, c->parm.setup.phone, sizeof(bchan->num));
  326. - strncpy(bchan->mynum, c->parm.setup.eazmsn, sizeof(bchan->mynum));
  327. + strscpy(bchan->num, c->parm.setup.phone, sizeof(bchan->num));
  328. + strscpy(bchan->mynum, c->parm.setup.eazmsn, sizeof(bchan->mynum));
  329. rc = FVteln2capi20(bchan->num, AdditionalInfo);
  330. isleasedline = (rc == 0);
  331. if (rc < 0)
  332. @@ -2013,7 +2013,7 @@ static int capidrv_command(isdn_ctrl *c, capidrv_contr *card)
  333. card->contrnr,
  334. c->parm.num, c->arg);
  335. bchan = &card->bchans[c->arg % card->nbchan];
  336. - strncpy(bchan->msn, c->parm.num, ISDN_MSNLEN);
  337. + strscpy(bchan->msn, c->parm.num, ISDN_MSNLEN);
  338. return 0;
  339.  
  340. case ISDN_CMD_CLREAZ:
  341. @@ -2298,7 +2298,7 @@ static int capidrv_addcontr(u16 contr, struct capi_profile *profp)
  342. if (profp->support1 & (1 << 8))
  343. card->interface.features |= ISDN_FEATURE_L2_MODEM;
  344. card->interface.hl_hdrlen = 22; /* len of DATA_B3_REQ */
  345. - strncpy(card->interface.id, id, sizeof(card->interface.id) - 1);
  346. + strscpy(card->interface.id, id, sizeof(card->interface.id));
  347.  
  348.  
  349. card->q931_read = card->q931_buf;
  350. diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
  351. index c138f66f2659..871bcfaa5d12 100644
  352. --- a/drivers/isdn/i4l/isdn_net.c
  353. +++ b/drivers/isdn/i4l/isdn_net.c
  354. @@ -2994,7 +2994,7 @@ isdn_net_getpeer(isdn_net_ioctl_phone *phone, isdn_net_ioctl_phone __user *peer)
  355. /* for pre-bound channels, we need this extra check */
  356. if (strncmp(dev->num[idx], "???", 3) == 0)
  357. return -ENOTCONN;
  358. - strncpy(phone->phone, dev->num[idx], ISDN_MSNLEN);
  359. + strscpy(phone->phone, dev->num[idx], ISDN_MSNLEN);
  360. phone->outgoing = USG_OUTGOING(dev->usage[idx]);
  361. if (copy_to_user(peer, phone, sizeof(*peer)))
  362. return -EFAULT;
  363. diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
  364. index 75c94bde287e..173b4b70c791 100644
  365. --- a/drivers/isdn/i4l/isdn_tty.c
  366. +++ b/drivers/isdn/i4l/isdn_tty.c
  367. @@ -877,7 +877,7 @@ isdn_tty_resume(char *id, modem_info *info, atemu *m)
  368. cmd.parm.cmsg.para[3] = 5; /* 16 bit 0x0005 Resume */
  369. cmd.parm.cmsg.para[4] = 0;
  370. cmd.parm.cmsg.para[5] = l;
  371. - strncpy(&cmd.parm.cmsg.para[6], id, l);
  372. + strncpy(&cmd.parm.cmsg.para[6], id, sizeof(cmd.parm.cmsg.para) - 6 - 1);
  373. cmd.command = CAPI_PUT_MESSAGE;
  374. info->dialing = 1;
  375. // strcpy(dev->num[i], n);
  376. @@ -2051,7 +2051,7 @@ isdn_tty_stat_callback(int i, isdn_ctrl *c)
  377. printk(KERN_DEBUG "tty_STAT_CAUSE ttyI%d\n", info->line);
  378. #endif
  379. /* Signal cause to tty-device */
  380. - strncpy(info->last_cause, c->parm.num, 5);
  381. + strscpy(info->last_cause, c->parm.num, 5);
  382. return 1;
  383. case ISDN_STAT_DISPLAY:
  384. #ifdef ISDN_TTY_STAT_DEBUG
  385. diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c
  386. index 0d7212410e21..0fbe5c2bbc0c 100644
  387. --- a/drivers/md/dm-cache-metadata.c
  388. +++ b/drivers/md/dm-cache-metadata.c
  389. @@ -68,7 +68,7 @@ struct cache_disk_superblock {
  390. __le64 magic;
  391. __le32 version;
  392.  
  393. - __u8 policy_name[CACHE_POLICY_NAME_SIZE];
  394. + char policy_name[CACHE_POLICY_NAME_SIZE] __nonstring;
  395. __le32 policy_hint_size;
  396.  
  397. __u8 metadata_space_map_root[SPACE_MAP_ROOT_SIZE];
  398. @@ -128,7 +128,7 @@ struct dm_cache_metadata {
  399. bool changed:1;
  400. bool clean_when_opened:1;
  401.  
  402. - char policy_name[CACHE_POLICY_NAME_SIZE];
  403. + char policy_name[CACHE_POLICY_NAME_SIZE] __nonstring;
  404. unsigned policy_version[CACHE_POLICY_VERSION_SIZE];
  405. size_t policy_hint_size;
  406. struct dm_cache_statistics stats;
  407. diff --git a/drivers/md/dm-log-userspace-base.c b/drivers/md/dm-log-userspace-base.c
  408. index 53b7b06d0aa8..3584bd787256 100644
  409. --- a/drivers/md/dm-log-userspace-base.c
  410. +++ b/drivers/md/dm-log-userspace-base.c
  411. @@ -43,7 +43,7 @@ struct log_c {
  412. uint32_t region_size;
  413. region_t region_count;
  414. uint64_t luid;
  415. - char uuid[DM_UUID_LEN];
  416. + char uuid[DM_UUID_LEN] __nonstring;
  417.  
  418. /*
  419. * Mark and clear requests are held until a flush is issued
  420. diff --git a/drivers/media/dvb-frontends/dibx000_common.c b/drivers/media/dvb-frontends/dibx000_common.c
  421. index d981233e458f..dc80a8442e7a 100644
  422. --- a/drivers/media/dvb-frontends/dibx000_common.c
  423. +++ b/drivers/media/dvb-frontends/dibx000_common.c
  424. @@ -424,7 +424,7 @@ static int i2c_adapter_init(struct i2c_adapter *i2c_adap,
  425. struct i2c_algorithm *algo, const char *name,
  426. struct dibx000_i2c_master *mst)
  427. {
  428. - strncpy(i2c_adap->name, name, sizeof(i2c_adap->name));
  429. + strscpy(i2c_adap->name, name, sizeof(i2c_adap->name));
  430. i2c_adap->algo = algo;
  431. i2c_adap->algo_data = NULL;
  432. i2c_set_adapdata(i2c_adap, mst);
  433. diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
  434. index e79f72b8b858..329d215c7df1 100644
  435. --- a/drivers/media/media-device.c
  436. +++ b/drivers/media/media-device.c
  437. @@ -255,7 +255,7 @@ static long media_device_get_topology(struct media_device *mdev,
  438. memset(&kentity, 0, sizeof(kentity));
  439. kentity.id = entity->graph_obj.id;
  440. kentity.function = entity->function;
  441. - strncpy(kentity.name, entity->name,
  442. + strscpy(kentity.name, entity->name,
  443. sizeof(kentity.name));
  444.  
  445. if (copy_to_user(uentity, &kentity, sizeof(kentity)))
  446. diff --git a/drivers/media/pci/zoran/zoran_driver.c b/drivers/media/pci/zoran/zoran_driver.c
  447. index 8d4e7d930a66..a2982c1543cc 100644
  448. --- a/drivers/media/pci/zoran/zoran_driver.c
  449. +++ b/drivers/media/pci/zoran/zoran_driver.c
  450. @@ -1509,8 +1509,8 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability
  451. struct zoran_fh *fh = __fh;
  452. struct zoran *zr = fh->zr;
  453.  
  454. - strncpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card)-1);
  455. - strncpy(cap->driver, "zoran", sizeof(cap->driver)-1);
  456. + strscpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card));
  457. + strscpy(cap->driver, "zoran", sizeof(cap->driver));
  458. snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
  459. pci_name(zr->pci_dev));
  460. cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
  461. @@ -1525,8 +1525,8 @@ static int zoran_enum_fmt(struct zoran *zr, struct v4l2_fmtdesc *fmt, int flag)
  462.  
  463. for (num = i = 0; i < NUM_FORMATS; i++) {
  464. if (zoran_formats[i].flags & flag && num++ == fmt->index) {
  465. - strncpy(fmt->description, zoran_formats[i].name,
  466. - sizeof(fmt->description) - 1);
  467. + strscpy(fmt->description, zoran_formats[i].name,
  468. + sizeof(fmt->description) );
  469. /* fmt struct pre-zeroed, so adding '\0' not needed */
  470. fmt->pixelformat = zoran_formats[i].fourcc;
  471. if (zoran_formats[i].flags & ZORAN_FORMAT_COMPRESSED)
  472. @@ -2300,8 +2300,8 @@ static int zoran_enum_input(struct file *file, void *__fh,
  473. if (inp->index >= zr->card.inputs)
  474. return -EINVAL;
  475.  
  476. - strncpy(inp->name, zr->card.input[inp->index].name,
  477. - sizeof(inp->name) - 1);
  478. + strscpy(inp->name, zr->card.input[inp->index].name,
  479. + sizeof(inp->name));
  480. inp->type = V4L2_INPUT_TYPE_CAMERA;
  481. inp->std = V4L2_STD_ALL;
  482.  
  483. @@ -2343,7 +2343,7 @@ static int zoran_enum_output(struct file *file, void *__fh,
  484.  
  485. outp->index = 0;
  486. outp->type = V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY;
  487. - strncpy(outp->name, "Autodetect", sizeof(outp->name)-1);
  488. + strscpy(outp->name, "Autodetect", sizeof(outp->name));
  489.  
  490. return 0;
  491. }
  492. diff --git a/drivers/media/platform/am437x/am437x-vpfe.c b/drivers/media/platform/am437x/am437x-vpfe.c
  493. index 601ae6487617..a4645b83a523 100644
  494. --- a/drivers/media/platform/am437x/am437x-vpfe.c
  495. +++ b/drivers/media/platform/am437x/am437x-vpfe.c
  496. @@ -1540,7 +1540,7 @@ static int vpfe_enum_fmt(struct file *file, void *priv,
  497. if (!fmt)
  498. return -EINVAL;
  499.  
  500. - strncpy(f->description, fmt->name, sizeof(f->description) - 1);
  501. + strscpy(f->description, fmt->name, sizeof(f->description));
  502. f->pixelformat = fmt->fourcc;
  503. f->type = vpfe->fmt.type;
  504.  
  505. diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
  506. index 6f44abf7fa31..201202e4a8ca 100644
  507. --- a/drivers/media/platform/davinci/vpfe_capture.c
  508. +++ b/drivers/media/platform/davinci/vpfe_capture.c
  509. @@ -1759,7 +1759,7 @@ static int vpfe_probe(struct platform_device *pdev)
  510.  
  511. mutex_lock(&ccdc_lock);
  512.  
  513. - strncpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32);
  514. + strscpy(ccdc_cfg->name, vpfe_cfg->ccdc, 32);
  515. /* Get VINT0 irq resource */
  516. res1 = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
  517. if (!res1) {
  518. diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
  519. index 8937b0af7cb3..4f3658e093b6 100644
  520. --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
  521. +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
  522. @@ -265,8 +265,8 @@ static int vidioc_querycap(struct file *file, void *priv,
  523. {
  524. struct s5p_mfc_dev *dev = video_drvdata(file);
  525.  
  526. - strncpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver) - 1);
  527. - strncpy(cap->card, dev->vfd_dec->name, sizeof(cap->card) - 1);
  528. + strscpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver));
  529. + strscpy(cap->card, dev->vfd_dec->name, sizeof(cap->card));
  530. snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
  531. dev_name(&dev->plat_dev->dev));
  532. /*
  533. diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
  534. index 0d5d465561be..c137e6aa09d9 100644
  535. --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
  536. +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
  537. @@ -943,8 +943,8 @@ static int vidioc_querycap(struct file *file, void *priv,
  538. {
  539. struct s5p_mfc_dev *dev = video_drvdata(file);
  540.  
  541. - strncpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver) - 1);
  542. - strncpy(cap->card, dev->vfd_enc->name, sizeof(cap->card) - 1);
  543. + strscpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver));
  544. + strscpy(cap->card, dev->vfd_enc->name, sizeof(cap->card));
  545. snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
  546. dev_name(&dev->plat_dev->dev));
  547. /*
  548. diff --git a/drivers/media/platform/soc_camera/soc_camera_platform.c b/drivers/media/platform/soc_camera/soc_camera_platform.c
  549. index cb4986b8f798..5442bfd91f91 100644
  550. --- a/drivers/media/platform/soc_camera/soc_camera_platform.c
  551. +++ b/drivers/media/platform/soc_camera/soc_camera_platform.c
  552. @@ -159,7 +159,7 @@ static int soc_camera_platform_probe(struct platform_device *pdev)
  553.  
  554. v4l2_subdev_init(&priv->subdev, &platform_subdev_ops);
  555. v4l2_set_subdevdata(&priv->subdev, p);
  556. - strncpy(priv->subdev.name, dev_name(&pdev->dev), V4L2_SUBDEV_NAME_SIZE);
  557. + strscpy(priv->subdev.name, dev_name(&pdev->dev), V4L2_SUBDEV_NAME_SIZE);
  558.  
  559. return v4l2_device_register_subdev(&ici->v4l2_dev, &priv->subdev);
  560. }
  561. diff --git a/drivers/media/usb/go7007/go7007-v4l2.c b/drivers/media/usb/go7007/go7007-v4l2.c
  562. index 98cd57eaf36a..8374e4b60d55 100644
  563. --- a/drivers/media/usb/go7007/go7007-v4l2.c
  564. +++ b/drivers/media/usb/go7007/go7007-v4l2.c
  565. @@ -634,7 +634,7 @@ static int vidioc_enum_input(struct file *file, void *priv,
  566. if (inp->index >= go->board_info->num_inputs)
  567. return -EINVAL;
  568.  
  569. - strncpy(inp->name, go->board_info->inputs[inp->index].name,
  570. + strscpy(inp->name, go->board_info->inputs[inp->index].name,
  571. sizeof(inp->name));
  572.  
  573. /* If this board has a tuner, it will be the first input */
  574. diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
  575. index 77c3d331ff31..9ab071f8993d 100644
  576. --- a/drivers/media/usb/hdpvr/hdpvr-video.c
  577. +++ b/drivers/media/usb/hdpvr/hdpvr-video.c
  578. @@ -873,7 +873,7 @@ static int vidioc_g_audio(struct file *file, void *private_data,
  579.  
  580. audio->index = dev->options.audio_input;
  581. audio->capability = V4L2_AUDCAP_STEREO;
  582. - strncpy(audio->name, audio_iname[audio->index], sizeof(audio->name));
  583. + strscpy(audio->name, audio_iname[audio->index], sizeof(audio->name));
  584. audio->name[sizeof(audio->name) - 1] = '\0';
  585. return 0;
  586. }
  587. diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
  588. index 5970b8def548..14e49ebaace2 100644
  589. --- a/drivers/mfd/db8500-prcmu.c
  590. +++ b/drivers/mfd/db8500-prcmu.c
  591. @@ -2685,7 +2685,7 @@ static void dbx500_fw_version_init(struct platform_device *pdev,
  592. fw_info.version.api_version = (version >> 8) & 0xFF;
  593. fw_info.version.func_version = (version >> 16) & 0xFF;
  594. fw_info.version.errata = (version >> 24) & 0xFF;
  595. - strncpy(fw_info.version.project_name,
  596. + strscpy(fw_info.version.project_name,
  597. fw_project_name(fw_info.version.project),
  598. PRCMU_FW_PROJECT_NAME_LEN);
  599. fw_info.valid = true;
  600. diff --git a/drivers/misc/c2port/core.c b/drivers/misc/c2port/core.c
  601. index 1c5b7aec13d4..9e9e56d42efe 100644
  602. --- a/drivers/misc/c2port/core.c
  603. +++ b/drivers/misc/c2port/core.c
  604. @@ -926,7 +926,7 @@ struct c2port_device *c2port_device_register(char *name,
  605. }
  606. dev_set_drvdata(c2dev->dev, c2dev);
  607.  
  608. - strncpy(c2dev->name, name, C2PORT_NAME_LEN);
  609. + strlcpy(c2dev->name, name, C2PORT_NAME_LEN);
  610. c2dev->ops = ops;
  611. mutex_init(&c2dev->mutex);
  612.  
  613. diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
  614. index 58c705f24f96..f1c70cfb8600 100644
  615. --- a/drivers/net/bonding/bond_options.c
  616. +++ b/drivers/net/bonding/bond_options.c
  617. @@ -1152,8 +1152,7 @@ static int bond_option_primary_set(struct bonding *bond,
  618. RCU_INIT_POINTER(bond->primary_slave, NULL);
  619. bond_select_active_slave(bond);
  620. }
  621. - strncpy(bond->params.primary, primary, IFNAMSIZ);
  622. - bond->params.primary[IFNAMSIZ - 1] = 0;
  623. + strscpy(bond->params.primary, primary, IFNAMSIZ);
  624.  
  625. netdev_dbg(bond->dev, "Recording %s as primary, but it has not been enslaved to %s yet\n",
  626. primary, bond->dev->name);
  627. diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
  628. index 6975150d144e..b66e1f0c6938 100644
  629. --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
  630. +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
  631. @@ -2243,11 +2243,11 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev)
  632.  
  633. host_info->os_type = ENA_ADMIN_OS_LINUX;
  634. host_info->kernel_ver = LINUX_VERSION_CODE;
  635. - strncpy(host_info->kernel_ver_str, utsname()->version,
  636. - sizeof(host_info->kernel_ver_str) - 1);
  637. + strscpy(host_info->kernel_ver_str, utsname()->version,
  638. + sizeof(host_info->kernel_ver_str));
  639. host_info->os_dist = 0;
  640. - strncpy(host_info->os_dist_str, utsname()->release,
  641. - sizeof(host_info->os_dist_str) - 1);
  642. + strscpy(host_info->os_dist_str, utsname()->release,
  643. + sizeof(host_info->os_dist_str));
  644. host_info->driver_version =
  645. (DRV_MODULE_VER_MAJOR) |
  646. (DRV_MODULE_VER_MINOR << ENA_ADMIN_HOST_INFO_MINOR_SHIFT) |
  647. diff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
  648. index a63ddf07f168..49086501024e 100644
  649. --- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
  650. +++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
  651. @@ -279,9 +279,9 @@ lio_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
  652. memset(drvinfo, 0, sizeof(struct ethtool_drvinfo));
  653. strcpy(drvinfo->driver, "liquidio");
  654. strcpy(drvinfo->version, LIQUIDIO_VERSION);
  655. - strncpy(drvinfo->fw_version, oct->fw_info.liquidio_firmware_version,
  656. + strscpy(drvinfo->fw_version, oct->fw_info.liquidio_firmware_version,
  657. ETHTOOL_FWVERS_LEN);
  658. - strncpy(drvinfo->bus_info, pci_name(oct->pci_dev), 32);
  659. + strscpy(drvinfo->bus_info, pci_name(oct->pci_dev), 32);
  660. }
  661.  
  662. static void
  663. @@ -296,9 +296,9 @@ lio_get_vf_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
  664. memset(drvinfo, 0, sizeof(struct ethtool_drvinfo));
  665. strcpy(drvinfo->driver, "liquidio_vf");
  666. strcpy(drvinfo->version, LIQUIDIO_VERSION);
  667. - strncpy(drvinfo->fw_version, oct->fw_info.liquidio_firmware_version,
  668. + strscpy(drvinfo->fw_version, oct->fw_info.liquidio_firmware_version,
  669. ETHTOOL_FWVERS_LEN);
  670. - strncpy(drvinfo->bus_info, pci_name(oct->pci_dev), 32);
  671. + strscpy(drvinfo->bus_info, pci_name(oct->pci_dev), 32);
  672. }
  673.  
  674. static int
  675. diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.c b/drivers/net/ethernet/cavium/liquidio/octeon_device.c
  676. index f38abf626412..b2ab309dac55 100644
  677. --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.c
  678. +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.c
  679. @@ -1212,10 +1212,10 @@ int octeon_core_drv_init(struct octeon_recv_info *recv_info, void *buf)
  680. goto core_drv_init_err;
  681. }
  682.  
  683. - strncpy(app_name,
  684. + strscpy(app_name,
  685. get_oct_app_string(
  686. (u32)recv_pkt->rh.r_core_drv_init.app_mode),
  687. - sizeof(app_name) - 1);
  688. + sizeof(app_name));
  689. oct->app_mode = (u32)recv_pkt->rh.r_core_drv_init.app_mode;
  690. if (recv_pkt->rh.r_core_drv_init.app_mode == CVM_DRV_NIC_APP) {
  691. oct->fw_info.max_nic_ports =
  692. @@ -1252,8 +1252,8 @@ int octeon_core_drv_init(struct octeon_recv_info *recv_info, void *buf)
  693. memcpy(cs, get_rbd(
  694. recv_pkt->buffer_ptr[0]) + OCT_DROQ_INFO_SIZE, sizeof(*cs));
  695.  
  696. - strncpy(oct->boardinfo.name, cs->boardname, OCT_BOARD_NAME);
  697. - strncpy(oct->boardinfo.serial_number, cs->board_serial_number,
  698. + strscpy(oct->boardinfo.name, cs->boardname, OCT_BOARD_NAME);
  699. + strscpy(oct->boardinfo.serial_number, cs->board_serial_number,
  700. OCT_SERIAL_LEN);
  701.  
  702. octeon_swap_8B_data((u64 *)cs, (sizeof(*cs) >> 3));
  703. diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
  704. index 7ea7f8a4aa2a..73fdd75872e5 100644
  705. --- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
  706. +++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
  707. @@ -638,18 +638,15 @@ static void hns_nic_get_drvinfo(struct net_device *net_dev,
  708. {
  709. struct hns_nic_priv *priv = netdev_priv(net_dev);
  710.  
  711. - strncpy(drvinfo->version, HNAE_DRIVER_VERSION,
  712. + strscpy(drvinfo->version, HNAE_DRIVER_VERSION,
  713. sizeof(drvinfo->version));
  714. - drvinfo->version[sizeof(drvinfo->version) - 1] = '\0';
  715.  
  716. - strncpy(drvinfo->driver, HNAE_DRIVER_NAME, sizeof(drvinfo->driver));
  717. - drvinfo->driver[sizeof(drvinfo->driver) - 1] = '\0';
  718. + strscpy(drvinfo->driver, HNAE_DRIVER_NAME, sizeof(drvinfo->driver));
  719.  
  720. - strncpy(drvinfo->bus_info, priv->dev->bus->name,
  721. + strscpy(drvinfo->bus_info, priv->dev->bus->name,
  722. sizeof(drvinfo->bus_info));
  723. - drvinfo->bus_info[ETHTOOL_BUSINFO_LEN - 1] = '\0';
  724.  
  725. - strncpy(drvinfo->fw_version, "N/A", ETHTOOL_FWVERS_LEN);
  726. + strscpy(drvinfo->fw_version, "N/A", ETHTOOL_FWVERS_LEN);
  727. drvinfo->eedump_len = 0;
  728. }
  729.  
  730. diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
  731. index b034c7f24eda..56cb47a29751 100644
  732. --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
  733. +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
  734. @@ -511,17 +511,14 @@ static void hns3_get_drvinfo(struct net_device *netdev,
  735. struct hns3_nic_priv *priv = netdev_priv(netdev);
  736. struct hnae3_handle *h = priv->ae_handle;
  737.  
  738. - strncpy(drvinfo->version, hns3_driver_version,
  739. + strscpy(drvinfo->version, hns3_driver_version,
  740. sizeof(drvinfo->version));
  741. - drvinfo->version[sizeof(drvinfo->version) - 1] = '\0';
  742.  
  743. - strncpy(drvinfo->driver, h->pdev->driver->name,
  744. + strscpy(drvinfo->driver, h->pdev->driver->name,
  745. sizeof(drvinfo->driver));
  746. - drvinfo->driver[sizeof(drvinfo->driver) - 1] = '\0';
  747.  
  748. - strncpy(drvinfo->bus_info, pci_name(h->pdev),
  749. + strscpy(drvinfo->bus_info, pci_name(h->pdev),
  750. sizeof(drvinfo->bus_info));
  751. - drvinfo->bus_info[ETHTOOL_BUSINFO_LEN - 1] = '\0';
  752.  
  753. snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), "0x%08x",
  754. priv->ae_handle->ae_algo->ops->get_fw_version(h));
  755. diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
  756. index 97381238eb7c..a1b6dd6a5807 100644
  757. --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c
  758. +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c
  759. @@ -699,7 +699,7 @@ static long i40e_ptp_create_clock(struct i40e_pf *pf)
  760. if (!IS_ERR_OR_NULL(pf->ptp_clock))
  761. return 0;
  762.  
  763. - strncpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name));
  764. + strscpy(pf->ptp_caps.name, i40e_driver_name, sizeof(pf->ptp_caps.name));
  765. pf->ptp_caps.owner = THIS_MODULE;
  766. pf->ptp_caps.max_adj = 999999999;
  767. pf->ptp_caps.n_ext_ts = 0;
  768. diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
  769. index 9fe85300e7b6..c4aa5edd4614 100644
  770. --- a/drivers/net/ethernet/marvell/sky2.c
  771. +++ b/drivers/net/ethernet/marvell/sky2.c
  772. @@ -4925,7 +4925,7 @@ static const char *sky2_name(u8 chipid, char *buf, int sz)
  773. };
  774.  
  775. if (chipid >= CHIP_ID_YUKON_XL && chipid <= CHIP_ID_YUKON_OP_2)
  776. - strncpy(buf, name[chipid - CHIP_ID_YUKON_XL], sz);
  777. + strscpy(buf, name[chipid - CHIP_ID_YUKON_XL], sz);
  778. else
  779. snprintf(buf, sz, "(chip %#x)", chipid);
  780. return buf;
  781. diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c
  782. index 7e14725055c7..03c74f5ecb51 100644
  783. --- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c
  784. +++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_resource.c
  785. @@ -105,7 +105,7 @@ static int nfp_cpp_resource_find(struct nfp_cpp *cpp, struct nfp_resource *res)
  786.  
  787. cpp_id = NFP_CPP_ID(NFP_RESOURCE_TBL_TARGET, 3, 0); /* Atomic read */
  788.  
  789. - strncpy(name_pad, res->name, sizeof(name_pad));
  790. + strscpy(name_pad, res->name, sizeof(name_pad));
  791.  
  792. /* Search for a matching entry */
  793. if (!memcmp(name_pad, NFP_RESOURCE_TBL_NAME "\0\0\0\0\0\0\0\0", 8)) {
  794. @@ -192,7 +192,7 @@ nfp_resource_acquire(struct nfp_cpp *cpp, const char *name)
  795. if (!res)
  796. return ERR_PTR(-ENOMEM);
  797.  
  798. - strncpy(res->name, name, NFP_RESOURCE_ENTRY_NAME_SZ);
  799. + strscpy(res->name, name, NFP_RESOURCE_ENTRY_NAME_SZ);
  800.  
  801. dev_mutex = nfp_cpp_mutex_alloc(cpp, NFP_RESOURCE_TBL_TARGET,
  802. NFP_RESOURCE_TBL_BASE,
  803. diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c
  804. index 97e3bc60c3e7..75a45e6398c2 100644
  805. --- a/drivers/net/hamradio/hdlcdrv.c
  806. +++ b/drivers/net/hamradio/hdlcdrv.c
  807. @@ -611,7 +611,7 @@ static int hdlcdrv_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
  808.  
  809. case HDLCDRVCTL_DRIVERNAME:
  810. if (s->ops && s->ops->drvname) {
  811. - strncpy(bi.data.drivername, s->ops->drvname,
  812. + strscpy(bi.data.drivername, s->ops->drvname,
  813. sizeof(bi.data.drivername));
  814. break;
  815. }
  816. diff --git a/drivers/net/wireless/ath/ath5k/led.c b/drivers/net/wireless/ath/ath5k/led.c
  817. index 6a2a16856763..9b274cd2dd19 100644
  818. --- a/drivers/net/wireless/ath/ath5k/led.c
  819. +++ b/drivers/net/wireless/ath/ath5k/led.c
  820. @@ -129,7 +129,7 @@ ath5k_register_led(struct ath5k_hw *ah, struct ath5k_led *led,
  821. int err;
  822.  
  823. led->ah = ah;
  824. - strncpy(led->name, name, sizeof(led->name));
  825. + strscpy(led->name, name, sizeof(led->name));
  826. led->name[sizeof(led->name)-1] = 0;
  827. led->led_dev.name = led->name;
  828. led->led_dev.default_trigger = trigger;
  829. diff --git a/drivers/net/wireless/atmel/atmel.c b/drivers/net/wireless/atmel/atmel.c
  830. index c9dd5e44c9c6..fc58111d6e02 100644
  831. --- a/drivers/net/wireless/atmel/atmel.c
  832. +++ b/drivers/net/wireless/atmel/atmel.c
  833. @@ -2672,7 +2672,7 @@ static int atmel_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
  834.  
  835. priv->firmware = new_firmware;
  836. priv->firmware_length = com.len;
  837. - strncpy(priv->firmware_id, com.id, 31);
  838. + strscpy(priv->firmware_id, com.id, 31);
  839. priv->firmware_id[31] = '\0';
  840. break;
  841.  
  842. diff --git a/drivers/net/wireless/broadcom/b43/leds.c b/drivers/net/wireless/broadcom/b43/leds.c
  843. index cb987c2ecc6b..2e328bfe83e6 100644
  844. --- a/drivers/net/wireless/broadcom/b43/leds.c
  845. +++ b/drivers/net/wireless/broadcom/b43/leds.c
  846. @@ -131,7 +131,7 @@ static int b43_register_led(struct b43_wldev *dev, struct b43_led *led,
  847. led->wl = dev->wl;
  848. led->index = led_index;
  849. led->activelow = activelow;
  850. - strncpy(led->name, name, sizeof(led->name));
  851. + strscpy(led->name, name, sizeof(led->name));
  852. atomic_set(&led->state, 0);
  853.  
  854. led->led_dev.name = led->name;
  855. diff --git a/drivers/net/wireless/broadcom/b43legacy/leds.c b/drivers/net/wireless/broadcom/b43legacy/leds.c
  856. index fd4565389c77..2e933a3190d2 100644
  857. --- a/drivers/net/wireless/broadcom/b43legacy/leds.c
  858. +++ b/drivers/net/wireless/broadcom/b43legacy/leds.c
  859. @@ -101,7 +101,7 @@ static int b43legacy_register_led(struct b43legacy_wldev *dev,
  860. led->dev = dev;
  861. led->index = led_index;
  862. led->activelow = activelow;
  863. - strncpy(led->name, name, sizeof(led->name));
  864. + strscpy(led->name, name, sizeof(led->name));
  865.  
  866. led->led_dev.name = led->name;
  867. led->led_dev.default_trigger = default_trigger;
  868. diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
  869. index 15fa00d79fc6..110af59c2aa1 100644
  870. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
  871. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
  872. @@ -4166,8 +4166,7 @@ static u32
  873. brcmf_vndr_ie(u8 *iebuf, s32 pktflag, u8 *ie_ptr, u32 ie_len, s8 *add_del_cmd)
  874. {
  875.  
  876. - strncpy(iebuf, add_del_cmd, VNDR_IE_CMD_LEN - 1);
  877. - iebuf[VNDR_IE_CMD_LEN - 1] = '\0';
  878. + strscpy(iebuf, add_del_cmd, VNDR_IE_CMD_LEN);
  879.  
  880. put_unaligned_le32(1, &iebuf[VNDR_IE_COUNT_OFFSET]);
  881.  
  882. diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/dma.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/dma.c
  883. index b7df576bb84d..66336c87b0d9 100644
  884. --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/dma.c
  885. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/dma.c
  886. @@ -584,8 +584,7 @@ struct dma_pub *dma_attach(char *name, struct brcms_c_info *wlc,
  887. rxextheadroom, nrxpost, rxoffset, txregbase, rxregbase);
  888.  
  889. /* make a private copy of our callers name */
  890. - strncpy(di->name, name, MAXNAMEL);
  891. - di->name[MAXNAMEL - 1] = '\0';
  892. + strscpy(di->name, name, MAXNAMEL);
  893.  
  894. di->dmadev = core->dma_dev;
  895.  
  896. diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
  897. index 67aefc8fc9ac..1591641a0191 100644
  898. --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
  899. +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
  900. @@ -747,9 +747,9 @@ void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt)
  901. dump_info->hw_step = cpu_to_le32(CSR_HW_REV_STEP(fwrt->trans->hw_rev));
  902. memcpy(dump_info->fw_human_readable, fwrt->fw->human_readable,
  903. sizeof(dump_info->fw_human_readable));
  904. - strncpy(dump_info->dev_human_readable, fwrt->trans->cfg->name,
  905. + strscpy(dump_info->dev_human_readable, fwrt->trans->cfg->name,
  906. sizeof(dump_info->dev_human_readable));
  907. - strncpy(dump_info->bus_human_readable, fwrt->dev->bus->name,
  908. + strscpy(dump_info->bus_human_readable, fwrt->dev->bus->name,
  909. sizeof(dump_info->bus_human_readable));
  910.  
  911. dump_data = iwl_fw_error_next_data(dump_data);
  912. diff --git a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
  913. index c1bc0a6ef300..451b20108770 100644
  914. --- a/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
  915. +++ b/drivers/net/wireless/intersil/hostap/hostap_ioctl.c
  916. @@ -3608,7 +3608,7 @@ static int prism2_ioctl_get_encryption(local_info_t *local,
  917. param->u.crypt.key_len = 0;
  918. param->u.crypt.idx = 0xff;
  919. } else {
  920. - strncpy(param->u.crypt.alg, (*crypt)->ops->name,
  921. + strscpy(param->u.crypt.alg, (*crypt)->ops->name,
  922. HOSTAP_CRYPT_ALG_NAME_LEN);
  923. param->u.crypt.key_len = 0;
  924.  
  925. diff --git a/drivers/net/wireless/intersil/prism54/isl_ioctl.c b/drivers/net/wireless/intersil/prism54/isl_ioctl.c
  926. index 334717b0a2be..2320ae9f72c5 100644
  927. --- a/drivers/net/wireless/intersil/prism54/isl_ioctl.c
  928. +++ b/drivers/net/wireless/intersil/prism54/isl_ioctl.c
  929. @@ -264,7 +264,7 @@ prism54_get_name(struct net_device *ndev, struct iw_request_info *info,
  930. int rvalue;
  931.  
  932. if (islpci_get_state(priv) < PRV_STATE_INIT) {
  933. - strncpy(cwrq, "NOT READY!", IFNAMSIZ);
  934. + strscpy(cwrq, "NOT READY!", IFNAMSIZ);
  935. return 0;
  936. }
  937. rvalue = mgt_get_request(priv, OID_INL_PHYCAPABILITIES, 0, NULL, &r);
  938. @@ -281,7 +281,7 @@ prism54_get_name(struct net_device *ndev, struct iw_request_info *info,
  939. capabilities = "IEEE 802.11b/g"; /* Default */
  940. break;
  941. }
  942. - strncpy(cwrq, capabilities, IFNAMSIZ);
  943. + strscpy(cwrq, capabilities, IFNAMSIZ);
  944. return rvalue;
  945. }
  946.  
  947. diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
  948. index 0133fcd4601b..1bf9b573c9d8 100644
  949. --- a/drivers/net/wireless/ray_cs.c
  950. +++ b/drivers/net/wireless/ray_cs.c
  951. @@ -635,7 +635,7 @@ static void init_startup_params(ray_dev_t *local)
  952. local->sparm.b4.a_acting_as_ap_status = TYPE_STA;
  953.  
  954. if (essid != NULL)
  955. - strncpy(local->sparm.b4.a_current_ess_id, essid, ESSID_SIZE);
  956. + strscpy(local->sparm.b4.a_current_ess_id, essid, ESSID_SIZE);
  957. } /* init_startup_params */
  958.  
  959. /*===========================================================================*/
  960. diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c
  961. index c2d5b495c179..8d9373184e2b 100644
  962. --- a/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c
  963. +++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/leds.c
  964. @@ -146,7 +146,7 @@ static int rtl8187_register_led(struct ieee80211_hw *dev,
  965. led->dev = dev;
  966. led->ledpin = ledpin;
  967. led->is_radio = is_radio;
  968. - strncpy(led->name, name, sizeof(led->name));
  969. + strscpy(led->name, name, sizeof(led->name));
  970.  
  971. led->led_dev.name = led->name;
  972. led->led_dev.default_trigger = default_trigger;
  973. diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
  974. index 0fe7ea35c221..e8cdbb8f68d7 100644
  975. --- a/drivers/nvme/host/core.c
  976. +++ b/drivers/nvme/host/core.c
  977. @@ -2006,7 +2006,7 @@ static void nvme_init_subnqn(struct nvme_subsystem *subsys, struct nvme_ctrl *ct
  978.  
  979. nqnlen = strnlen(id->subnqn, NVMF_NQN_SIZE);
  980. if (nqnlen > 0 && nqnlen < NVMF_NQN_SIZE) {
  981. - strncpy(subsys->subnqn, id->subnqn, NVMF_NQN_SIZE);
  982. + strcpy(subsys->subnqn, id->subnqn);
  983. return;
  984. }
  985.  
  986. diff --git a/drivers/nvme/target/discovery.c b/drivers/nvme/target/discovery.c
  987. index 8f3b57b4c97b..f0fd39bc41c0 100644
  988. --- a/drivers/nvme/target/discovery.c
  989. +++ b/drivers/nvme/target/discovery.c
  990. @@ -133,7 +133,7 @@ static void nvmet_execute_identify_disc_ctrl(struct nvmet_req *req)
  991. }
  992.  
  993. memset(id->fr, ' ', sizeof(id->fr));
  994. - strncpy((char *)id->fr, UTS_RELEASE, sizeof(id->fr));
  995. + strncpy(id->fr, UTS_RELEASE, sizeof(id->fr));
  996.  
  997. /* no limit on data transfer sizes for now */
  998. id->mdts = 0;
  999. diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c
  1000. index 1de4b4493824..d94306c7b16a 100644
  1001. --- a/drivers/power/supply/charger-manager.c
  1002. +++ b/drivers/power/supply/charger-manager.c
  1003. @@ -470,13 +470,13 @@ static void uevent_notify(struct charger_manager *cm, const char *event)
  1004. if (env_str_save[0] == 0) {
  1005. if (!strncmp(env_str, event, UEVENT_BUF_SIZE))
  1006. return; /* status not changed */
  1007. - strncpy(env_str_save, event, UEVENT_BUF_SIZE);
  1008. + strscpy(env_str_save, event, UEVENT_BUF_SIZE);
  1009. return;
  1010. }
  1011.  
  1012. if (!strncmp(env_str_save, event, UEVENT_BUF_SIZE))
  1013. return; /* Duplicated. */
  1014. - strncpy(env_str_save, event, UEVENT_BUF_SIZE);
  1015. + strscpy(env_str_save, event, UEVENT_BUF_SIZE);
  1016. return;
  1017. }
  1018.  
  1019. @@ -485,7 +485,7 @@ static void uevent_notify(struct charger_manager *cm, const char *event)
  1020. if (!env_str_save[0])
  1021. return;
  1022.  
  1023. - strncpy(env_str, env_str_save, UEVENT_BUF_SIZE);
  1024. + strscpy(env_str, env_str_save, UEVENT_BUF_SIZE);
  1025. kobject_uevent(&cm->dev->kobj, KOBJ_CHANGE);
  1026. env_str_save[0] = 0;
  1027.  
  1028. @@ -497,7 +497,7 @@ static void uevent_notify(struct charger_manager *cm, const char *event)
  1029. return;
  1030.  
  1031. /* save the status and notify the update */
  1032. - strncpy(env_str, event, UEVENT_BUF_SIZE);
  1033. + strscpy(env_str, event, UEVENT_BUF_SIZE);
  1034. kobject_uevent(&cm->dev->kobj, KOBJ_CHANGE);
  1035.  
  1036. dev_info(cm->dev, "%s\n", event);
  1037. @@ -1718,9 +1718,9 @@ static int charger_manager_probe(struct platform_device *pdev)
  1038. memcpy(&cm->charger_psy_desc, &psy_default, sizeof(psy_default));
  1039.  
  1040. if (!desc->psy_name)
  1041. - strncpy(cm->psy_name_buf, psy_default.name, PSY_NAME_MAX);
  1042. + strscpy(cm->psy_name_buf, psy_default.name, PSY_NAME_MAX);
  1043. else
  1044. - strncpy(cm->psy_name_buf, desc->psy_name, PSY_NAME_MAX);
  1045. + strscpy(cm->psy_name_buf, desc->psy_name, PSY_NAME_MAX);
  1046. cm->charger_psy_desc.name = cm->psy_name_buf;
  1047.  
  1048. /* Allocate for psy properties because they may vary */
  1049. diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
  1050. index e0f31ed096a5..c22a3d211024 100644
  1051. --- a/drivers/rpmsg/qcom_glink_native.c
  1052. +++ b/drivers/rpmsg/qcom_glink_native.c
  1053. @@ -1405,7 +1405,7 @@ static int qcom_glink_rx_open(struct qcom_glink *glink, unsigned int rcid,
  1054. }
  1055.  
  1056. rpdev->ept = &channel->ept;
  1057. - strncpy(rpdev->id.name, name, RPMSG_NAME_SIZE);
  1058. + strscpy(rpdev->id.name, name, RPMSG_NAME_SIZE);
  1059. rpdev->src = RPMSG_ADDR_ANY;
  1060. rpdev->dst = RPMSG_ADDR_ANY;
  1061. rpdev->ops = &glink_device_ops;
  1062. @@ -1455,7 +1455,7 @@ static void qcom_glink_rx_close(struct qcom_glink *glink, unsigned int rcid)
  1063. cancel_work_sync(&channel->intent_work);
  1064.  
  1065. if (channel->rpdev) {
  1066. - strncpy(chinfo.name, channel->name, sizeof(chinfo.name));
  1067. + strscpy(chinfo.name, channel->name, sizeof(chinfo.name));
  1068. chinfo.src = RPMSG_ADDR_ANY;
  1069. chinfo.dst = RPMSG_ADDR_ANY;
  1070.  
  1071. diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c
  1072. index 92d0c6a7a837..398444d47a5a 100644
  1073. --- a/drivers/rpmsg/qcom_smd.c
  1074. +++ b/drivers/rpmsg/qcom_smd.c
  1075. @@ -1038,7 +1038,7 @@ static int qcom_smd_create_device(struct qcom_smd_channel *channel)
  1076.  
  1077. /* Assign public information to the rpmsg_device */
  1078. rpdev = &qsdev->rpdev;
  1079. - strncpy(rpdev->id.name, channel->name, RPMSG_NAME_SIZE);
  1080. + strscpy(rpdev->id.name, channel->name, RPMSG_NAME_SIZE);
  1081. rpdev->src = RPMSG_ADDR_ANY;
  1082. rpdev->dst = RPMSG_ADDR_ANY;
  1083.  
  1084. @@ -1261,7 +1261,7 @@ static void qcom_channel_state_worker(struct work_struct *work)
  1085.  
  1086. spin_unlock_irqrestore(&edge->channels_lock, flags);
  1087.  
  1088. - strncpy(chinfo.name, channel->name, sizeof(chinfo.name));
  1089. + strscpy(chinfo.name, channel->name, sizeof(chinfo.name));
  1090. chinfo.src = RPMSG_ADDR_ANY;
  1091. chinfo.dst = RPMSG_ADDR_ANY;
  1092. rpmsg_unregister_device(&edge->dev, &chinfo);
  1093. diff --git a/drivers/scsi/3w-9xxx.h b/drivers/scsi/3w-9xxx.h
  1094. index d88cd3499bd5..dfe68dae5583 100644
  1095. --- a/drivers/scsi/3w-9xxx.h
  1096. +++ b/drivers/scsi/3w-9xxx.h
  1097. @@ -616,7 +616,7 @@ typedef union TAG_TW_Response_Queue {
  1098. /* Compatibility information structure */
  1099. typedef struct TAG_TW_Compatibility_Info
  1100. {
  1101. - char driver_version[32];
  1102. + char driver_version[32] __attribute__((nonstring));
  1103. unsigned short working_srl;
  1104. unsigned short working_branch;
  1105. unsigned short working_build;
  1106. diff --git a/drivers/scsi/3w-sas.h b/drivers/scsi/3w-sas.h
  1107. index 05e77d84c16d..2c302fbd7cf9 100644
  1108. --- a/drivers/scsi/3w-sas.h
  1109. +++ b/drivers/scsi/3w-sas.h
  1110. @@ -334,7 +334,7 @@ typedef struct {
  1111. /* Compatibility information structure */
  1112. typedef struct TAG_TW_Compatibility_Info
  1113. {
  1114. - char driver_version[32];
  1115. + char driver_version[32] __attribute__((nonstring));
  1116. unsigned short working_srl;
  1117. unsigned short working_branch;
  1118. unsigned short working_build;
  1119. diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
  1120. index 75e828bd30e3..585ad1ae3565 100644
  1121. --- a/drivers/scsi/arcmsr/arcmsr_hba.c
  1122. +++ b/drivers/scsi/arcmsr/arcmsr_hba.c
  1123. @@ -2879,7 +2879,7 @@ static void arcmsr_handle_virtual_command(struct AdapterControlBlock *acb,
  1124. {
  1125. switch (cmd->cmnd[0]) {
  1126. case INQUIRY: {
  1127. - unsigned char inqdata[36];
  1128. + char inqdata[36];
  1129. char *buffer;
  1130. struct scatterlist *sg;
  1131.  
  1132. @@ -2896,11 +2896,11 @@ static void arcmsr_handle_virtual_command(struct AdapterControlBlock *acb,
  1133. /* ISO, ECMA, & ANSI versions */
  1134. inqdata[4] = 31;
  1135. /* length of additional data */
  1136. - strncpy(&inqdata[8], "Areca ", 8);
  1137. + memcpy(&inqdata[8], "Areca ", 8);
  1138. /* Vendor Identification */
  1139. - strncpy(&inqdata[16], "RAID controller ", 16);
  1140. + memcpy(&inqdata[16], "RAID controller ", 16);
  1141. /* Product Identification */
  1142. - strncpy(&inqdata[32], "R001", 4); /* Product Revision */
  1143. + memcpy(&inqdata[32], "R001", 4); /* Product Revision */
  1144.  
  1145. sg = scsi_sglist(cmd);
  1146. buffer = kmap_atomic(sg_page(sg)) + sg->offset;
  1147. diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c
  1148. index 9a602ae8987f..5671870bc17a 100644
  1149. --- a/drivers/scsi/ips.c
  1150. +++ b/drivers/scsi/ips.c
  1151. @@ -2244,7 +2244,7 @@ ips_get_bios_version(ips_ha_t * ha, int intr)
  1152. major = 0;
  1153. minor = 0;
  1154.  
  1155. - strncpy(ha->bios_version, " ?", 8);
  1156. + memcpy(ha->bios_version, " ?", 8);
  1157.  
  1158. if (ha->pcidev->device == IPS_DEVICEID_COPPERHEAD) {
  1159. if (IPS_USE_MEMIO(ha)) {
  1160. @@ -3519,11 +3519,11 @@ ips_send_cmd(ips_ha_t * ha, ips_scb_t * scb)
  1161. inquiry.Flags[1] =
  1162. IPS_SCSI_INQ_WBus16 |
  1163. IPS_SCSI_INQ_Sync;
  1164. - strncpy(inquiry.VendorId, "IBM ",
  1165. + memcpy(inquiry.VendorId, "IBM ",
  1166. 8);
  1167. - strncpy(inquiry.ProductId,
  1168. + memcpy(inquiry.ProductId,
  1169. "SERVERAID ", 16);
  1170. - strncpy(inquiry.ProductRevisionLevel,
  1171. + memcpy(inquiry.ProductRevisionLevel,
  1172. "1.00", 4);
  1173.  
  1174. ips_scmd_buf_write(scb->scsi_cmd,
  1175. @@ -4040,9 +4040,9 @@ ips_inquiry(ips_ha_t * ha, ips_scb_t * scb)
  1176. inquiry.Flags[0] = IPS_SCSI_INQ_Address16;
  1177. inquiry.Flags[1] =
  1178. IPS_SCSI_INQ_WBus16 | IPS_SCSI_INQ_Sync | IPS_SCSI_INQ_CmdQue;
  1179. - strncpy(inquiry.VendorId, "IBM ", 8);
  1180. - strncpy(inquiry.ProductId, "SERVERAID ", 16);
  1181. - strncpy(inquiry.ProductRevisionLevel, "1.00", 4);
  1182. + memcpy(inquiry.VendorId, "IBM ", 8);
  1183. + memcpy(inquiry.ProductId, "SERVERAID ", 16);
  1184. + memcpy(inquiry.ProductRevisionLevel, "1.00", 4);
  1185.  
  1186. ips_scmd_buf_write(scb->scsi_cmd, &inquiry, sizeof (inquiry));
  1187.  
  1188. @@ -5626,10 +5626,10 @@ ips_write_driver_status(ips_ha_t * ha, int intr)
  1189. /* change values (as needed) */
  1190. ha->nvram->operating_system = IPS_OS_LINUX;
  1191. ha->nvram->adapter_type = ha->ad_type;
  1192. - strncpy((char *) ha->nvram->driver_high, IPS_VERSION_HIGH, 4);
  1193. - strncpy((char *) ha->nvram->driver_low, IPS_VERSION_LOW, 4);
  1194. - strncpy((char *) ha->nvram->bios_high, ha->bios_version, 4);
  1195. - strncpy((char *) ha->nvram->bios_low, ha->bios_version + 4, 4);
  1196. + memcpy((char *) ha->nvram->driver_high, IPS_VERSION_HIGH, 4);
  1197. + memcpy((char *) ha->nvram->driver_low, IPS_VERSION_LOW, 4);
  1198. + memcpy((char *) ha->nvram->bios_high, ha->bios_version, 4);
  1199. + memcpy((char *) ha->nvram->bios_low, ha->bios_version + 4, 4);
  1200.  
  1201. ha->nvram->versioning = 0; /* Indicate the Driver Does Not Support Versioning */
  1202.  
  1203. diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
  1204. index 46f6d97d21d6..9ddd54946d1c 100644
  1205. --- a/drivers/scsi/lpfc/lpfc_attr.c
  1206. +++ b/drivers/scsi/lpfc/lpfc_attr.c
  1207. @@ -3769,7 +3769,7 @@ lpfc_stat_data_ctrl_store(struct device *dev, struct device_attribute *attr,
  1208. if (strlen(buf) > (LPFC_MAX_DATA_CTRL_LEN - 1))
  1209. return -EINVAL;
  1210.  
  1211. - strncpy(bucket_data, buf, LPFC_MAX_DATA_CTRL_LEN);
  1212. + strscpy(bucket_data, buf, LPFC_MAX_DATA_CTRL_LEN);
  1213. str_ptr = &bucket_data[0];
  1214. /* Ignore this token - this is command token */
  1215. token = strsep(&str_ptr, "\t ");
  1216. diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
  1217. index 7113acf42ff3..42d2e8633b1c 100644
  1218. --- a/drivers/scsi/qla2xxx/qla_mr.c
  1219. +++ b/drivers/scsi/qla2xxx/qla_mr.c
  1220. @@ -1875,21 +1875,21 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type)
  1221. phost_info = &preg_hsi->hsi;
  1222. memset(preg_hsi, 0, sizeof(struct register_host_info));
  1223. phost_info->os_type = OS_TYPE_LINUX;
  1224. - strncpy(phost_info->sysname,
  1225. + strscpy(phost_info->sysname,
  1226. p_sysid->sysname, SYSNAME_LENGTH);
  1227. - strncpy(phost_info->nodename,
  1228. + strscpy(phost_info->nodename,
  1229. p_sysid->nodename, NODENAME_LENGTH);
  1230. if (!strcmp(phost_info->nodename, "(none)"))
  1231. ha->mr.host_info_resend = true;
  1232. - strncpy(phost_info->release,
  1233. + strscpy(phost_info->release,
  1234. p_sysid->release, RELEASE_LENGTH);
  1235. - strncpy(phost_info->version,
  1236. + strscpy(phost_info->version,
  1237. p_sysid->version, VERSION_LENGTH);
  1238. - strncpy(phost_info->machine,
  1239. + strscpy(phost_info->machine,
  1240. p_sysid->machine, MACHINE_LENGTH);
  1241. - strncpy(phost_info->domainname,
  1242. + strscpy(phost_info->domainname,
  1243. p_sysid->domainname, DOMNAME_LENGTH);
  1244. - strncpy(phost_info->hostdriver,
  1245. + strscpy(phost_info->hostdriver,
  1246. QLA2XXX_VERSION, VERSION_LENGTH);
  1247. preg_hsi->utc = (uint64_t)ktime_get_real_seconds();
  1248. ql_dbg(ql_dbg_init, vha, 0x0149,
  1249. diff --git a/drivers/soc/qcom/wcnss_ctrl.c b/drivers/soc/qcom/wcnss_ctrl.c
  1250. index d008e5b82db4..1d00e964d4aa 100644
  1251. --- a/drivers/soc/qcom/wcnss_ctrl.c
  1252. +++ b/drivers/soc/qcom/wcnss_ctrl.c
  1253. @@ -281,7 +281,7 @@ struct rpmsg_endpoint *qcom_wcnss_open_channel(void *wcnss, const char *name, rp
  1254. struct rpmsg_channel_info chinfo;
  1255. struct wcnss_ctrl *_wcnss = wcnss;
  1256.  
  1257. - strncpy(chinfo.name, name, sizeof(chinfo.name));
  1258. + strscpy(chinfo.name, name, sizeof(chinfo.name));
  1259. chinfo.src = RPMSG_ADDR_ANY;
  1260. chinfo.dst = RPMSG_ADDR_ANY;
  1261.  
  1262. diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
  1263. index 0e36b66ae5f7..24bd4dcb7a8d 100644
  1264. --- a/drivers/staging/fbtft/fbtft-core.c
  1265. +++ b/drivers/staging/fbtft/fbtft-core.c
  1266. @@ -771,7 +771,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
  1267. fbdefio->deferred_io = fbtft_deferred_io;
  1268. fb_deferred_io_init(info);
  1269.  
  1270. - strncpy(info->fix.id, dev->driver->name, 16);
  1271. + strscpy(info->fix.id, dev->driver->name, 16);
  1272. info->fix.type = FB_TYPE_PACKED_PIXELS;
  1273. info->fix.visual = FB_VISUAL_TRUECOLOR;
  1274. info->fix.xpanstep = 0;
  1275. diff --git a/drivers/staging/irda/drivers/irtty-sir.c b/drivers/staging/irda/drivers/irtty-sir.c
  1276. index 7a20a9a4663a..22f687443d58 100644
  1277. --- a/drivers/staging/irda/drivers/irtty-sir.c
  1278. +++ b/drivers/staging/irda/drivers/irtty-sir.c
  1279. @@ -402,7 +402,7 @@ static int irtty_ioctl(struct tty_struct *tty, struct file *file, unsigned int c
  1280. IRDA_ASSERT(dev->netdev != NULL, return -1;);
  1281.  
  1282. memset(&info, 0, sizeof(info));
  1283. - strncpy(info.name, dev->netdev->name, sizeof(info.name)-1);
  1284. + strscpy(info.name, dev->netdev->name, sizeof(info.name));
  1285.  
  1286. if (copy_to_user((void __user *)arg, &info, sizeof(info)))
  1287. err = -EFAULT;
  1288. diff --git a/drivers/staging/irda/net/af_irda.c b/drivers/staging/irda/net/af_irda.c
  1289. index c13553a9ee11..c1215fe4e1f0 100644
  1290. --- a/drivers/staging/irda/net/af_irda.c
  1291. +++ b/drivers/staging/irda/net/af_irda.c
  1292. @@ -469,7 +469,7 @@ static int irda_open_tsap(struct irda_sock *self, __u8 tsap_sel, char *name)
  1293. notify.udata_indication = irda_data_indication;
  1294. notify.flow_indication = irda_flow_indication;
  1295. notify.instance = self;
  1296. - strncpy(notify.name, name, NOTIFY_MAX_NAME);
  1297. + strscpy(notify.name, name, NOTIFY_MAX_NAME);
  1298.  
  1299. self->tsap = irttp_open_tsap(tsap_sel, DEFAULT_INITIAL_CREDIT,
  1300. &notify);
  1301. @@ -504,7 +504,7 @@ static int irda_open_lsap(struct irda_sock *self, int pid)
  1302. irda_notify_init(&notify);
  1303. notify.udata_indication = irda_data_indication;
  1304. notify.instance = self;
  1305. - strncpy(notify.name, "Ultra", NOTIFY_MAX_NAME);
  1306. + strscpy(notify.name, "Ultra", NOTIFY_MAX_NAME);
  1307.  
  1308. self->lsap = irlmp_open_lsap(LSAP_CONNLESS, &notify, pid);
  1309. if (self->lsap == NULL) {
  1310. diff --git a/drivers/staging/irda/net/ircomm/ircomm_param.c b/drivers/staging/irda/net/ircomm/ircomm_param.c
  1311. index 5728e76ca6d5..89e44e5a6da2 100644
  1312. --- a/drivers/staging/irda/net/ircomm/ircomm_param.c
  1313. +++ b/drivers/staging/irda/net/ircomm/ircomm_param.c
  1314. @@ -254,7 +254,7 @@ static int ircomm_param_port_name(void *instance, irda_param_t *param, int get)
  1315. pr_debug("%s(), not imp!\n", __func__);
  1316. } else {
  1317. pr_debug("%s(), port-name=%s\n", __func__ , param->pv.c);
  1318. - strncpy(self->settings.port_name, param->pv.c, 32);
  1319. + strscpy(self->settings.port_name, param->pv.c, 32);
  1320. }
  1321.  
  1322. return 0;
  1323. diff --git a/drivers/staging/irda/net/irlmp.c b/drivers/staging/irda/net/irlmp.c
  1324. index 7af618fb66c0..23fc1e83612a 100644
  1325. --- a/drivers/staging/irda/net/irlmp.c
  1326. +++ b/drivers/staging/irda/net/irlmp.c
  1327. @@ -854,7 +854,7 @@ void irlmp_do_discovery(int nslots)
  1328. * end
  1329. */
  1330. irlmp->discovery_cmd.data.charset = CS_ASCII;
  1331. - strncpy(irlmp->discovery_cmd.data.info, sysctl_devname,
  1332. + strscpy(irlmp->discovery_cmd.data.info, sysctl_devname,
  1333. NICKNAME_MAX_LEN);
  1334. irlmp->discovery_cmd.name_len = strlen(irlmp->discovery_cmd.data.info);
  1335. irlmp->discovery_cmd.nslots = nslots;
  1336. @@ -1083,7 +1083,7 @@ discovery_t *irlmp_get_discovery_response(void)
  1337. */
  1338. irlmp->discovery_rsp.data.charset = CS_ASCII;
  1339.  
  1340. - strncpy(irlmp->discovery_rsp.data.info, sysctl_devname,
  1341. + strscpy(irlmp->discovery_rsp.data.info, sysctl_devname,
  1342. NICKNAME_MAX_LEN);
  1343. irlmp->discovery_rsp.name_len = strlen(irlmp->discovery_rsp.data.info);
  1344.  
  1345. diff --git a/drivers/staging/ks7010/ks_wlan_net.c b/drivers/staging/ks7010/ks_wlan_net.c
  1346. index e48c55769c94..adc812a3f0c9 100644
  1347. --- a/drivers/staging/ks7010/ks_wlan_net.c
  1348. +++ b/drivers/staging/ks7010/ks_wlan_net.c
  1349. @@ -429,8 +429,7 @@ static int ks_wlan_get_nick(struct net_device *dev,
  1350. return -EPERM;
  1351.  
  1352. /* for SLEEP MODE */
  1353. - strncpy(extra, priv->nick, 16);
  1354. - extra[16] = '\0';
  1355. + strscpy(extra, priv->nick, 16);
  1356. dwrq->length = strlen(extra) + 1;
  1357.  
  1358. return 0;
  1359. diff --git a/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h b/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h
  1360. index 5e332e3af68a..61be9d551bf4 100644
  1361. --- a/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h
  1362. +++ b/drivers/staging/lustre/include/uapi/linux/lustre/lustre_user.h
  1363. @@ -489,8 +489,7 @@ static inline int obd_uuid_empty(struct obd_uuid *uuid)
  1364.  
  1365. static inline void obd_str2uuid(struct obd_uuid *uuid, const char *tmp)
  1366. {
  1367. - strncpy((char *)uuid->uuid, tmp, sizeof(*uuid));
  1368. - uuid->uuid[sizeof(*uuid) - 1] = '\0';
  1369. + strscpy((char *)uuid->uuid, tmp, sizeof(*uuid));
  1370. }
  1371.  
  1372. /* For printf's only, make sure uuid is terminated */
  1373. diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c
  1374. index 48d25ccadbb3..bd30308d1852 100644
  1375. --- a/drivers/staging/lustre/lnet/lnet/api-ni.c
  1376. +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c
  1377. @@ -1671,7 +1671,7 @@ lnet_fill_ni_info(struct lnet_ni *ni, struct lnet_ioctl_config_data *config)
  1378. if (!ni->ni_interfaces[i])
  1379. break;
  1380.  
  1381. - strncpy(net_config->ni_interfaces[i],
  1382. + strscpy(net_config->ni_interfaces[i],
  1383. ni->ni_interfaces[i],
  1384. sizeof(net_config->ni_interfaces[i]));
  1385. }
  1386. diff --git a/drivers/staging/lustre/lnet/lnet/config.c b/drivers/staging/lustre/lnet/lnet/config.c
  1387. index 0aea268a4f1c..25b9832fb70b 100644
  1388. --- a/drivers/staging/lustre/lnet/lnet/config.c
  1389. +++ b/drivers/staging/lustre/lnet/lnet/config.c
  1390. @@ -1004,8 +1004,7 @@ lnet_splitnets(char *source, struct list_head *nets)
  1391. if (!tb2)
  1392. return -ENOMEM;
  1393.  
  1394. - strncpy(tb2->ltb_text, sep, len);
  1395. - tb2->ltb_text[len] = '\0';
  1396. + strcpy(tb2->ltb_text, sep);
  1397. list_add_tail(&tb2->ltb_list, nets);
  1398.  
  1399. tb = tb2;
  1400. @@ -1048,8 +1047,7 @@ lnet_match_networks(char **networksp, char *ip2nets, __u32 *ipaddrs, int nip)
  1401. rc = 0;
  1402.  
  1403. list_for_each_entry_safe(tb, temp, &raw_entries, ltb_list) {
  1404. - strncpy(source, tb->ltb_text, sizeof(source));
  1405. - source[sizeof(source) - 1] = '\0';
  1406. + strscpy(source, tb->ltb_text, sizeof(source));
  1407.  
  1408. /* replace ltb_text with the network(s) add on match */
  1409. rc = lnet_match_network_tokens(tb->ltb_text, ipaddrs, nip);
  1410. diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
  1411. index 576bdc7e9c42..d8eab0fb1835 100644
  1412. --- a/drivers/staging/media/imx/imx-media-capture.c
  1413. +++ b/drivers/staging/media/imx/imx-media-capture.c
  1414. @@ -73,8 +73,8 @@ static int vidioc_querycap(struct file *file, void *fh,
  1415. {
  1416. struct capture_priv *priv = video_drvdata(file);
  1417.  
  1418. - strncpy(cap->driver, "imx-media-capture", sizeof(cap->driver) - 1);
  1419. - strncpy(cap->card, "imx-media-capture", sizeof(cap->card) - 1);
  1420. + strscpy(cap->driver, "imx-media-capture", sizeof(cap->driver));
  1421. + strscpy(cap->card, "imx-media-capture", sizeof(cap->card));
  1422. snprintf(cap->bus_info, sizeof(cap->bus_info),
  1423. "platform:%s", priv->src_sd->name);
  1424.  
  1425. diff --git a/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c b/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c
  1426. index 10349db6066b..e4bca2d854e8 100644
  1427. --- a/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c
  1428. +++ b/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c
  1429. @@ -1933,7 +1933,7 @@ static int rtw_wx_set_enc_ext(struct net_device *dev,
  1430. goto exit;
  1431. }
  1432.  
  1433. - strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
  1434. + strscpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
  1435.  
  1436. if (pext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
  1437. param->u.crypt.set_tx = 1;
  1438. diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
  1439. index 919231fec09c..668845aa4871 100644
  1440. --- a/drivers/staging/rtl8192e/rtllib_softmac.c
  1441. +++ b/drivers/staging/rtl8192e/rtllib_softmac.c
  1442. @@ -1684,14 +1684,14 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
  1443. * essid provided by the user.
  1444. */
  1445. if (!ssidbroad) {
  1446. - strncpy(tmp_ssid, ieee->current_network.ssid,
  1447. + strscpy(tmp_ssid, ieee->current_network.ssid,
  1448. IW_ESSID_MAX_SIZE);
  1449. tmp_ssid_len = ieee->current_network.ssid_len;
  1450. }
  1451. memcpy(&ieee->current_network, net,
  1452. sizeof(struct rtllib_network));
  1453. if (!ssidbroad) {
  1454. - strncpy(ieee->current_network.ssid, tmp_ssid,
  1455. + strscpy(ieee->current_network.ssid, tmp_ssid,
  1456. IW_ESSID_MAX_SIZE);
  1457. ieee->current_network.ssid_len = tmp_ssid_len;
  1458. }
  1459. diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
  1460. index 25c186a8bde3..bd98235416cd 100644
  1461. --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
  1462. +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
  1463. @@ -1460,12 +1460,12 @@ inline void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee
  1464. * essid provided by the user.
  1465. */
  1466. if (!ssidbroad) {
  1467. - strncpy(tmp_ssid, ieee->current_network.ssid, IW_ESSID_MAX_SIZE);
  1468. + strscpy(tmp_ssid, ieee->current_network.ssid, IW_ESSID_MAX_SIZE);
  1469. tmp_ssid_len = ieee->current_network.ssid_len;
  1470. }
  1471. memcpy(&ieee->current_network, net, sizeof(struct ieee80211_network));
  1472.  
  1473. - strncpy(ieee->current_network.ssid, tmp_ssid, IW_ESSID_MAX_SIZE);
  1474. + strscpy(ieee->current_network.ssid, tmp_ssid, IW_ESSID_MAX_SIZE);
  1475. ieee->current_network.ssid_len = tmp_ssid_len;
  1476. printk(KERN_INFO"Linking with %s,channel:%d, qos:%d, myHT:%d, networkHT:%d\n",ieee->current_network.ssid,ieee->current_network.channel, ieee->current_network.qos_data.supported, ieee->pHTInfo->bEnableHT, ieee->current_network.bssht.bdSupportHT);
  1477.  
  1478. diff --git a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
  1479. index d43399f985f9..598db8ebb304 100644
  1480. --- a/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
  1481. +++ b/drivers/staging/rtl8712/rtl871x_ioctl_linux.c
  1482. @@ -1798,7 +1798,7 @@ static int r871x_wx_set_enc_ext(struct net_device *dev,
  1483. return -ENOMEM;
  1484. param->cmd = IEEE_CMD_SET_ENCRYPTION;
  1485. eth_broadcast_addr(param->sta_addr);
  1486. - strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
  1487. + strscpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN);
  1488. if (pext->ext_flags & IW_ENCODE_EXT_GROUP_KEY)
  1489. param->u.crypt.set_tx = 0;
  1490. if (pext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
  1491. diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
  1492. index 51d48de24a24..52506e47a3eb 100644
  1493. --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
  1494. +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
  1495. @@ -2663,7 +2663,7 @@ static int rtw_cfg80211_add_monitor_if (struct adapter *padapter, char *name, st
  1496. }
  1497.  
  1498. mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP;
  1499. - strncpy(mon_ndev->name, name, IFNAMSIZ);
  1500. + strscpy(mon_ndev->name, name, IFNAMSIZ);
  1501. mon_ndev->name[IFNAMSIZ - 1] = 0;
  1502. mon_ndev->needs_free_netdev = true;
  1503. mon_ndev->priv_destructor = rtw_ndev_destructor;
  1504. diff --git a/drivers/staging/rts5208/rtsx_scsi.c b/drivers/staging/rts5208/rtsx_scsi.c
  1505. index 146548284ec7..854bfbe779dc 100644
  1506. --- a/drivers/staging/rts5208/rtsx_scsi.c
  1507. +++ b/drivers/staging/rts5208/rtsx_scsi.c
  1508. @@ -480,7 +480,7 @@ static noinline_for_stack int inquiry(struct scsi_cmnd *srb, struct rtsx_chip *c
  1509. char *inquiry_ms = (char *)"Generic-MemoryStick 1.00 ";
  1510. char *inquiry_string;
  1511. unsigned char sendbytes;
  1512. - unsigned char *buf;
  1513. + char *buf __nonstring;
  1514. u8 card = get_lun_card(chip, lun);
  1515. bool pro_formatter_flag = false;
  1516. unsigned char inquiry_buf[] = {
  1517. @@ -521,22 +521,15 @@ static noinline_for_stack int inquiry(struct scsi_cmnd *srb, struct rtsx_chip *c
  1518. if (!card || (card == MS_CARD))
  1519. pro_formatter_flag = true;
  1520.  
  1521. - if (pro_formatter_flag) {
  1522. - if (scsi_bufflen(srb) < 56)
  1523. - sendbytes = (unsigned char)(scsi_bufflen(srb));
  1524. - else
  1525. - sendbytes = 56;
  1526. -
  1527. - } else {
  1528. - if (scsi_bufflen(srb) < 36)
  1529. - sendbytes = (unsigned char)(scsi_bufflen(srb));
  1530. - else
  1531. - sendbytes = 36;
  1532. - }
  1533. + if (pro_formatter_flag)
  1534. + sendbytes = min(scsi_bufflen(srb), 56u);
  1535. + else
  1536. + sendbytes = min(scsi_bufflen(srb), 36u);
  1537.  
  1538. if (sendbytes > 8) {
  1539. + memset(buf, 0, sendbytes); /* crap workaround for gcc-8 warning */
  1540. memcpy(buf, inquiry_buf, 8);
  1541. - strncpy(buf + 8, inquiry_string, sendbytes - 8);
  1542. + strscpy(buf + 8, inquiry_string, sendbytes - 8);
  1543. if (pro_formatter_flag) {
  1544. /* Additional Length */
  1545. buf[4] = 0x33;
  1546. diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
  1547. index a91ef6ea29ce..26ba6dc0b3a4 100644
  1548. --- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
  1549. +++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
  1550. @@ -1114,7 +1114,7 @@ static int create_component(struct vchiq_mmal_instance *instance,
  1551. /* build component create message */
  1552. m.h.type = MMAL_MSG_TYPE_COMPONENT_CREATE;
  1553. m.u.component_create.client_component = (u32)(unsigned long)component;
  1554. - strncpy(m.u.component_create.name, name,
  1555. + strscpy(m.u.component_create.name, name,
  1556. sizeof(m.u.component_create.name));
  1557.  
  1558. ret = send_synchronous_mmal_msg(instance, &m,
  1559. diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c
  1560. index 4b34f71547c6..11445787afe3 100644
  1561. --- a/drivers/target/iscsi/iscsi_target_tpg.c
  1562. +++ b/drivers/target/iscsi/iscsi_target_tpg.c
  1563. @@ -636,8 +636,8 @@ int iscsit_ta_authentication(struct iscsi_portal_group *tpg, u32 authentication)
  1564. none = strstr(buf1, NONE);
  1565. if (none)
  1566. goto out;
  1567. - strncat(buf1, ",", strlen(","));
  1568. - strncat(buf1, NONE, strlen(NONE));
  1569. + strcat(buf1, ",");
  1570. + strcat(buf1, NONE);
  1571. if (iscsi_update_param_value(param, buf1) < 0)
  1572. return -EINVAL;
  1573. }
  1574. diff --git a/drivers/video/fbdev/mx3fb.c b/drivers/video/fbdev/mx3fb.c
  1575. index 1c3c7ab26a95..c998960f7678 100644
  1576. --- a/drivers/video/fbdev/mx3fb.c
  1577. +++ b/drivers/video/fbdev/mx3fb.c
  1578. @@ -743,7 +743,7 @@ static int mx3fb_set_fix(struct fb_info *fbi)
  1579. struct fb_fix_screeninfo *fix = &fbi->fix;
  1580. struct fb_var_screeninfo *var = &fbi->var;
  1581.  
  1582. - strncpy(fix->id, "DISP3 BG", 8);
  1583. + strscpy(fix->id, "DISP3 BG", 8);
  1584.  
  1585. fix->line_length = var->xres_virtual * var->bits_per_pixel / 8;
  1586.  
  1587. diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
  1588. index 73676eb0244a..742aa5f9b90b 100644
  1589. --- a/drivers/video/fbdev/uvesafb.c
  1590. +++ b/drivers/video/fbdev/uvesafb.c
  1591. @@ -422,7 +422,7 @@ static int uvesafb_vbe_getinfo(struct uvesafb_ktask *task,
  1592. task->t.flags = TF_VBEIB;
  1593. task->t.buf_len = sizeof(struct vbe_ib);
  1594. task->buf = &par->vbe_ib;
  1595. - strncpy(par->vbe_ib.vbe_signature, "VBE2", 4);
  1596. + memcpy(par->vbe_ib.vbe_signature, "VBE2", 4);
  1597.  
  1598. err = uvesafb_exec(task);
  1599. if (err || (task->t.regs.eax & 0xffff) != 0x004f) {
  1600. @@ -1868,7 +1868,7 @@ static ssize_t v86d_show(struct device_driver *dev, char *buf)
  1601. static ssize_t v86d_store(struct device_driver *dev, const char *buf,
  1602. size_t count)
  1603. {
  1604. - strncpy(v86d_path, buf, PATH_MAX);
  1605. + strscpy(v86d_path, buf, PATH_MAX);
  1606. return count;
  1607. }
  1608. static DRIVER_ATTR_RW(v86d);
  1609. diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
  1610. index 2e8f90f96540..5fa5a92500b2 100644
  1611. --- a/fs/ceph/mds_client.c
  1612. +++ b/fs/ceph/mds_client.c
  1613. @@ -3617,8 +3617,8 @@ int ceph_mdsc_init(struct ceph_fs_client *fsc)
  1614. init_rwsem(&mdsc->pool_perm_rwsem);
  1615. mdsc->pool_perm_tree = RB_ROOT;
  1616.  
  1617. - strncpy(mdsc->nodename, utsname()->nodename,
  1618. - sizeof(mdsc->nodename) - 1);
  1619. + strscpy(mdsc->nodename, utsname()->nodename,
  1620. + sizeof(mdsc->nodename));
  1621. return 0;
  1622. }
  1623.  
  1624. diff --git a/fs/cifs/cifsencrypt.c b/fs/cifs/cifsencrypt.c
  1625. index a6ef088e057b..8032417bf85c 100644
  1626. --- a/fs/cifs/cifsencrypt.c
  1627. +++ b/fs/cifs/cifsencrypt.c
  1628. @@ -294,7 +294,7 @@ int calc_lanman_hash(const char *password, const char *cryptkey, bool encrypt,
  1629. char password_with_pad[CIFS_ENCPWD_SIZE] = {0};
  1630.  
  1631. if (password)
  1632. - strncpy(password_with_pad, password, CIFS_ENCPWD_SIZE);
  1633. + strscpy(password_with_pad, password, CIFS_ENCPWD_SIZE);
  1634.  
  1635. if (!encrypt && global_secflags & CIFSSEC_MAY_PLNTXT) {
  1636. memcpy(lnm_session_key, password_with_pad,
  1637. diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
  1638. index 3241475a1733..3e3669a377f5 100644
  1639. --- a/fs/ext4/ext4.h
  1640. +++ b/fs/ext4/ext4.h
  1641. @@ -1274,13 +1274,13 @@ struct ext4_super_block {
  1642. __le32 s_first_error_time; /* first time an error happened */
  1643. __le32 s_first_error_ino; /* inode involved in first error */
  1644. __le64 s_first_error_block; /* block involved of first error */
  1645. - __u8 s_first_error_func[32]; /* function where the error happened */
  1646. + char s_first_error_func[32] __nonstring; /* function where the error happened */
  1647. __le32 s_first_error_line; /* line number where error happened */
  1648. __le32 s_last_error_time; /* most recent time of an error */
  1649. __le32 s_last_error_ino; /* inode involved in last error */
  1650. __le32 s_last_error_line; /* line number where error happened */
  1651. __le64 s_last_error_block; /* block involved of last error */
  1652. - __u8 s_last_error_func[32]; /* function where the error happened */
  1653. + char s_last_error_func[32] __nonstring; /* function where the error happened */
  1654. #define EXT4_S_ERR_END offsetof(struct ext4_super_block, s_mount_opts)
  1655. __u8 s_mount_opts[64];
  1656. __le32 s_usr_quota_inum; /* inode for tracking user quota */
  1657. diff --git a/fs/hfsplus/xattr.c b/fs/hfsplus/xattr.c
  1658. index e538b758c448..7e062ffb93e0 100644
  1659. --- a/fs/hfsplus/xattr.c
  1660. +++ b/fs/hfsplus/xattr.c
  1661. @@ -407,7 +407,7 @@ static int name_len(const char *xattr_name, int xattr_name_len)
  1662. return len;
  1663. }
  1664.  
  1665. -static int copy_name(char *buffer, const char *xattr_name, int name_len)
  1666. +static int copy_name(char __attribute__((nonstring)) *buffer, const char *xattr_name, int name_len)
  1667. {
  1668. int len = name_len;
  1669. int offset = 0;
  1670. diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c
  1671. index 0594db435972..bccc42a5ad85 100644
  1672. --- a/fs/xfs/xfs_xattr.c
  1673. +++ b/fs/xfs/xfs_xattr.c
  1674. @@ -170,9 +170,6 @@ xfs_xattr_put_listent(
  1675. int namelen,
  1676. int valuelen)
  1677. {
  1678. - char *prefix;
  1679. - int prefix_len;
  1680. -
  1681. ASSERT(context->count >= 0);
  1682.  
  1683. if (flags & XFS_ATTR_ROOT) {
  1684. @@ -203,19 +200,18 @@ xfs_xattr_put_listent(
  1685. if (!capable(CAP_SYS_ADMIN))
  1686. return;
  1687.  
  1688. - prefix = XATTR_TRUSTED_PREFIX;
  1689. - prefix_len = XATTR_TRUSTED_PREFIX_LEN;
  1690. + __xfs_xattr_put_listent(context, XATTR_TRUSTED_PREFIX,
  1691. + XATTR_TRUSTED_PREFIX_LEN,
  1692. + name, namelen);
  1693. } else if (flags & XFS_ATTR_SECURE) {
  1694. - prefix = XATTR_SECURITY_PREFIX;
  1695. - prefix_len = XATTR_SECURITY_PREFIX_LEN;
  1696. + __xfs_xattr_put_listent(context, XATTR_SECURITY_PREFIX,
  1697. + XATTR_SECURITY_PREFIX_LEN,
  1698. + name, namelen);
  1699. } else {
  1700. - prefix = XATTR_USER_PREFIX;
  1701. - prefix_len = XATTR_USER_PREFIX_LEN;
  1702. + __xfs_xattr_put_listent(context, XATTR_SECURITY_PREFIX,
  1703. + XATTR_SECURITY_PREFIX_LEN,
  1704. + name, namelen);
  1705. }
  1706. -
  1707. - __xfs_xattr_put_listent(context, prefix, prefix_len, name,
  1708. - namelen);
  1709. - return;
  1710. }
  1711.  
  1712. ssize_t
  1713. diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h
  1714. index d271ff23984f..14c7f6f32d4c 100644
  1715. --- a/include/linux/hdmi.h
  1716. +++ b/include/linux/hdmi.h
  1717. @@ -185,8 +185,8 @@ struct hdmi_spd_infoframe {
  1718. enum hdmi_infoframe_type type;
  1719. unsigned char version;
  1720. unsigned char length;
  1721. - char vendor[8];
  1722. - char product[16];
  1723. + char vendor[8] __nonstring;
  1724. + char product[16] __nonstring;
  1725. enum hdmi_spd_sdi sdi;
  1726. };
  1727.  
  1728. diff --git a/include/linux/isdnif.h b/include/linux/isdnif.h
  1729. index 8d80fdc68647..3fe8991d6df8 100644
  1730. --- a/include/linux/isdnif.h
  1731. +++ b/include/linux/isdnif.h
  1732. @@ -13,7 +13,6 @@
  1733. #ifndef __ISDNIF_H__
  1734. #define __ISDNIF_H__
  1735.  
  1736. -
  1737. #include <linux/skbuff.h>
  1738. #include <uapi/linux/isdnif.h>
  1739.  
  1740. @@ -358,7 +357,7 @@ typedef struct {
  1741. __u32 PLCI;
  1742. __u32 NCCI;
  1743. } adr;
  1744. - __u8 para[MAX_CAPI_PARA_LEN];
  1745. + char para[MAX_CAPI_PARA_LEN] __nonstring;
  1746. } capi_msg;
  1747.  
  1748. /*
  1749. diff --git a/include/linux/nvme.h b/include/linux/nvme.h
  1750. index 4112e2bd747f..5b4c3ced5cac 100644
  1751. --- a/include/linux/nvme.h
  1752. +++ b/include/linux/nvme.h
  1753. @@ -203,7 +203,7 @@ struct nvme_id_ctrl {
  1754. __le16 ssvid;
  1755. char sn[20];
  1756. char mn[40];
  1757. - char fr[8];
  1758. + char fr[8] __nonstring;
  1759. __u8 rab;
  1760. __u8 ieee[3];
  1761. __u8 cmic;
  1762. diff --git a/include/scsi/fc_encode.h b/include/scsi/fc_encode.h
  1763. index 35fd4744f3e9..818cbc6c0abf 100644
  1764. --- a/include/scsi/fc_encode.h
  1765. +++ b/include/scsi/fc_encode.h
  1766. @@ -272,7 +272,7 @@ static inline int fc_ct_ms_fill(struct fc_lport *lport,
  1767. put_unaligned_be16(FC_FDMI_HBA_ATTR_MANUFACTURER,
  1768. &entry->type);
  1769. put_unaligned_be16(len, &entry->len);
  1770. - strncpy((char *)&entry->value,
  1771. + strscpy((char *)&entry->value,
  1772. fc_host_manufacturer(lport->host),
  1773. FC_FDMI_HBA_ATTR_MANUFACTURER_LEN);
  1774.  
  1775. @@ -284,7 +284,7 @@ static inline int fc_ct_ms_fill(struct fc_lport *lport,
  1776. put_unaligned_be16(FC_FDMI_HBA_ATTR_SERIALNUMBER,
  1777. &entry->type);
  1778. put_unaligned_be16(len, &entry->len);
  1779. - strncpy((char *)&entry->value,
  1780. + strscpy((char *)&entry->value,
  1781. fc_host_serial_number(lport->host),
  1782. FC_FDMI_HBA_ATTR_SERIALNUMBER_LEN);
  1783.  
  1784. diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
  1785. index 0032a7efcbed..08130f5e600b 100644
  1786. --- a/include/scsi/libsas.h
  1787. +++ b/include/scsi/libsas.h
  1788. @@ -578,7 +578,7 @@ enum task_attribute {
  1789. struct sas_ssp_task {
  1790. u8 retry_count; /* hardware retry, should be > 0 */
  1791.  
  1792. - u8 LUN[8];
  1793. + char LUN[8] __nonstring;
  1794. u8 enable_first_burst:1;
  1795. enum task_attribute task_attr;
  1796. u8 task_prio;
  1797. diff --git a/include/trace/events/rcu.h b/include/trace/events/rcu.h
  1798. index d8c33298c153..f3bfde70834d 100644
  1799. --- a/include/trace/events/rcu.h
  1800. +++ b/include/trace/events/rcu.h
  1801. @@ -691,7 +691,7 @@ TRACE_EVENT(rcu_torture_read,
  1802. ),
  1803.  
  1804. TP_fast_assign(
  1805. - strncpy(__entry->rcutorturename, rcutorturename,
  1806. + strscpy(__entry->rcutorturename, rcutorturename,
  1807. RCUTORTURENAME_LEN);
  1808. __entry->rcutorturename[RCUTORTURENAME_LEN - 1] = 0;
  1809. __entry->rhp = rhp;
  1810. diff --git a/include/trace/events/wbt.h b/include/trace/events/wbt.h
  1811. index b048694070e2..55fbc3c292d5 100644
  1812. --- a/include/trace/events/wbt.h
  1813. +++ b/include/trace/events/wbt.h
  1814. @@ -33,7 +33,7 @@ TRACE_EVENT(wbt_stat,
  1815. ),
  1816.  
  1817. TP_fast_assign(
  1818. - strncpy(__entry->name, dev_name(bdi->dev), 32);
  1819. + strscpy(__entry->name, dev_name(bdi->dev), 32);
  1820. __entry->rmean = stat[0].mean;
  1821. __entry->rmin = stat[0].min;
  1822. __entry->rmax = stat[0].max;
  1823. @@ -67,7 +67,7 @@ TRACE_EVENT(wbt_lat,
  1824. ),
  1825.  
  1826. TP_fast_assign(
  1827. - strncpy(__entry->name, dev_name(bdi->dev), 32);
  1828. + strscpy(__entry->name, dev_name(bdi->dev), 32);
  1829. __entry->lat = div_u64(lat, 1000);
  1830. ),
  1831.  
  1832. @@ -103,7 +103,7 @@ TRACE_EVENT(wbt_step,
  1833. ),
  1834.  
  1835. TP_fast_assign(
  1836. - strncpy(__entry->name, dev_name(bdi->dev), 32);
  1837. + strscpy(__entry->name, dev_name(bdi->dev), 32);
  1838. __entry->msg = msg;
  1839. __entry->step = step;
  1840. __entry->window = div_u64(window, 1000);
  1841. @@ -138,7 +138,7 @@ TRACE_EVENT(wbt_timer,
  1842. ),
  1843.  
  1844. TP_fast_assign(
  1845. - strncpy(__entry->name, dev_name(bdi->dev), 32);
  1846. + strscpy(__entry->name, dev_name(bdi->dev), 32);
  1847. __entry->status = status;
  1848. __entry->step = step;
  1849. __entry->inflight = inflight;
  1850. diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
  1851. index 32db72c7c055..dd7ddea7eab1 100644
  1852. --- a/include/trace/events/writeback.h
  1853. +++ b/include/trace/events/writeback.h
  1854. @@ -66,7 +66,7 @@ TRACE_EVENT(writeback_dirty_page,
  1855. ),
  1856.  
  1857. TP_fast_assign(
  1858. - strncpy(__entry->name,
  1859. + strscpy(__entry->name,
  1860. mapping ? dev_name(inode_to_bdi(mapping->host)->dev) : "(unknown)", 32);
  1861. __entry->ino = mapping ? mapping->host->i_ino : 0;
  1862. __entry->index = page->index;
  1863. @@ -96,7 +96,7 @@ DECLARE_EVENT_CLASS(writeback_dirty_inode_template,
  1864. struct backing_dev_info *bdi = inode_to_bdi(inode);
  1865.  
  1866. /* may be called for files on pseudo FSes w/ unregistered bdi */
  1867. - strncpy(__entry->name,
  1868. + strscpy(__entry->name,
  1869. bdi->dev ? dev_name(bdi->dev) : "(unknown)", 32);
  1870. __entry->ino = inode->i_ino;
  1871. __entry->state = inode->i_state;
  1872. @@ -176,7 +176,7 @@ DECLARE_EVENT_CLASS(writeback_write_inode_template,
  1873. ),
  1874.  
  1875. TP_fast_assign(
  1876. - strncpy(__entry->name,
  1877. + strscpy(__entry->name,
  1878. dev_name(inode_to_bdi(inode)->dev), 32);
  1879. __entry->ino = inode->i_ino;
  1880. __entry->sync_mode = wbc->sync_mode;
  1881. @@ -220,7 +220,7 @@ DECLARE_EVENT_CLASS(writeback_work_class,
  1882. __field(unsigned int, cgroup_ino)
  1883. ),
  1884. TP_fast_assign(
  1885. - strncpy(__entry->name,
  1886. + strscpy(__entry->name,
  1887. wb->bdi->dev ? dev_name(wb->bdi->dev) : "(unknown)", 32);
  1888. __entry->nr_pages = work->nr_pages;
  1889. __entry->sb_dev = work->sb ? work->sb->s_dev : 0;
  1890. @@ -274,7 +274,7 @@ DECLARE_EVENT_CLASS(writeback_class,
  1891. __field(unsigned int, cgroup_ino)
  1892. ),
  1893. TP_fast_assign(
  1894. - strncpy(__entry->name, dev_name(wb->bdi->dev), 32);
  1895. + strscpy(__entry->name, dev_name(wb->bdi->dev), 32);
  1896. __entry->cgroup_ino = __trace_wb_assign_cgroup(wb);
  1897. ),
  1898. TP_printk("bdi %s: cgroup_ino=%u",
  1899. @@ -296,7 +296,7 @@ TRACE_EVENT(writeback_bdi_register,
  1900. __array(char, name, 32)
  1901. ),
  1902. TP_fast_assign(
  1903. - strncpy(__entry->name, dev_name(bdi->dev), 32);
  1904. + strscpy(__entry->name, dev_name(bdi->dev), 32);
  1905. ),
  1906. TP_printk("bdi %s",
  1907. __entry->name
  1908. @@ -321,7 +321,7 @@ DECLARE_EVENT_CLASS(wbc_class,
  1909. ),
  1910.  
  1911. TP_fast_assign(
  1912. - strncpy(__entry->name, dev_name(bdi->dev), 32);
  1913. + strscpy(__entry->name, dev_name(bdi->dev), 32);
  1914. __entry->nr_to_write = wbc->nr_to_write;
  1915. __entry->pages_skipped = wbc->pages_skipped;
  1916. __entry->sync_mode = wbc->sync_mode;
  1917. @@ -372,7 +372,7 @@ TRACE_EVENT(writeback_queue_io,
  1918. ),
  1919. TP_fast_assign(
  1920. unsigned long *older_than_this = work->older_than_this;
  1921. - strncpy(__entry->name, dev_name(wb->bdi->dev), 32);
  1922. + strscpy(__entry->name, dev_name(wb->bdi->dev), 32);
  1923. __entry->older = older_than_this ? *older_than_this : 0;
  1924. __entry->age = older_than_this ?
  1925. (jiffies - *older_than_this) * 1000 / HZ : -1;
  1926. @@ -583,7 +583,7 @@ TRACE_EVENT(writeback_sb_inodes_requeue,
  1927. ),
  1928.  
  1929. TP_fast_assign(
  1930. - strncpy(__entry->name,
  1931. + strscpy(__entry->name,
  1932. dev_name(inode_to_bdi(inode)->dev), 32);
  1933. __entry->ino = inode->i_ino;
  1934. __entry->state = inode->i_state;
  1935. @@ -657,7 +657,7 @@ DECLARE_EVENT_CLASS(writeback_single_inode_template,
  1936. ),
  1937.  
  1938. TP_fast_assign(
  1939. - strncpy(__entry->name,
  1940. + strscpy(__entry->name,
  1941. dev_name(inode_to_bdi(inode)->dev), 32);
  1942. __entry->ino = inode->i_ino;
  1943. __entry->state = inode->i_state;
  1944. diff --git a/include/uapi/linux/dm-ioctl.h b/include/uapi/linux/dm-ioctl.h
  1945. index 14c44ec8b622..d2174c087817 100644
  1946. --- a/include/uapi/linux/dm-ioctl.h
  1947. +++ b/include/uapi/linux/dm-ioctl.h
  1948. @@ -167,7 +167,7 @@ struct dm_target_spec {
  1949. */
  1950. __u32 next;
  1951.  
  1952. - char target_type[DM_MAX_TYPE_NAME];
  1953. + char target_type[DM_MAX_TYPE_NAME] __nonstring;
  1954.  
  1955. /*
  1956. * Parameter string starts immediately after this object.
  1957. diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
  1958. index ed5d34925ad0..2dd88f40722a 100644
  1959. --- a/kernel/debug/kdb/kdb_io.c
  1960. +++ b/kernel/debug/kdb/kdb_io.c
  1961. @@ -443,7 +443,7 @@ static char *kdb_read(char *buffer, size_t bufsize)
  1962. char *kdb_getstr(char *buffer, size_t bufsize, const char *prompt)
  1963. {
  1964. if (prompt && kdb_prompt_str != prompt)
  1965. - strncpy(kdb_prompt_str, prompt, CMD_BUFLEN);
  1966. + strncpy(kdb_prompt_str, prompt, CMD_BUFLEN - 1);
  1967. kdb_printf(kdb_prompt_str);
  1968. kdb_nextline = 1; /* Prompt and input resets line number */
  1969. return kdb_read(buffer, bufsize);
  1970. diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
  1971. index e405677ee08d..17c995d72837 100644
  1972. --- a/kernel/debug/kdb/kdb_main.c
  1973. +++ b/kernel/debug/kdb/kdb_main.c
  1974. @@ -1103,12 +1103,12 @@ static int handle_ctrl_cmd(char *cmd)
  1975. case CTRL_P:
  1976. if (cmdptr != cmd_tail)
  1977. cmdptr = (cmdptr-1) % KDB_CMD_HISTORY_COUNT;
  1978. - strncpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
  1979. + strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
  1980. return 1;
  1981. case CTRL_N:
  1982. if (cmdptr != cmd_head)
  1983. cmdptr = (cmdptr+1) % KDB_CMD_HISTORY_COUNT;
  1984. - strncpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
  1985. + strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
  1986. return 1;
  1987. }
  1988. return 0;
  1989. @@ -1315,17 +1315,15 @@ static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
  1990. if (*cmdbuf != '\n') {
  1991. if (*cmdbuf < 32) {
  1992. if (cmdptr == cmd_head) {
  1993. - strncpy(cmd_hist[cmd_head], cmd_cur,
  1994. + strscpy(cmd_hist[cmd_head], cmd_cur,
  1995. CMD_BUFLEN);
  1996. - *(cmd_hist[cmd_head] +
  1997. - strlen(cmd_hist[cmd_head])-1) = '\0';
  1998. }
  1999. if (!handle_ctrl_cmd(cmdbuf))
  2000. *(cmd_cur+strlen(cmd_cur)-1) = '\0';
  2001. cmdbuf = cmd_cur;
  2002. goto do_full_getstr;
  2003. } else {
  2004. - strncpy(cmd_hist[cmd_head], cmd_cur,
  2005. + strscpy(cmd_hist[cmd_head], cmd_cur,
  2006. CMD_BUFLEN);
  2007. }
  2008.  
  2009. diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
  2010. index 987d9a9ae283..67bc12da1cf5 100644
  2011. --- a/kernel/trace/blktrace.c
  2012. +++ b/kernel/trace/blktrace.c
  2013. @@ -494,7 +494,7 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
  2014. if (!buts->buf_size || !buts->buf_nr)
  2015. return -EINVAL;
  2016.  
  2017. - strncpy(buts->name, name, BLKTRACE_BDEV_SIZE);
  2018. + strscpy(buts->name, name, BLKTRACE_BDEV_SIZE);
  2019. buts->name[BLKTRACE_BDEV_SIZE - 1] = '\0';
  2020.  
  2021. /*
  2022. diff --git a/lib/test_hexdump.c b/lib/test_hexdump.c
  2023. index 427632ff19d2..e54ce8f85d0e 100644
  2024. --- a/lib/test_hexdump.c
  2025. +++ b/lib/test_hexdump.c
  2026. @@ -95,7 +95,7 @@ static void __init test_hexdump_prepare_test(size_t len, int rowsize,
  2027. *p++ = ' ';
  2028. } while (p < test + rs * 2 + rs / gs + 1);
  2029.  
  2030. - strncpy(p, data_a, l);
  2031. + strscpy(p, data_a, l);
  2032. p += l;
  2033. }
  2034.  
  2035. diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
  2036. index 1036e4fa1ea2..d56c964b98ad 100644
  2037. --- a/net/bluetooth/hidp/core.c
  2038. +++ b/net/bluetooth/hidp/core.c
  2039. @@ -775,7 +775,7 @@ static int hidp_setup_hid(struct hidp_session *session,
  2040. hid->version = req->version;
  2041. hid->country = req->country;
  2042.  
  2043. - strncpy(hid->name, req->name, sizeof(req->name) - 1);
  2044. + strscpy(hid->name, req->name, sizeof(hid->name));
  2045.  
  2046. snprintf(hid->phys, sizeof(hid->phys), "%pMR",
  2047. &l2cap_pi(session->ctrl_sock->sk)->chan->src);
  2048. diff --git a/net/core/pktgen.c b/net/core/pktgen.c
  2049. index b8ab5c829511..4d911b9c5f48 100644
  2050. --- a/net/core/pktgen.c
  2051. +++ b/net/core/pktgen.c
  2052. @@ -1264,7 +1264,7 @@ static ssize_t pktgen_if_write(struct file *file,
  2053. buf[len] = 0;
  2054. if (strcmp(buf, pkt_dev->dst_min) != 0) {
  2055. memset(pkt_dev->dst_min, 0, sizeof(pkt_dev->dst_min));
  2056. - strncpy(pkt_dev->dst_min, buf, len);
  2057. + strscpy(pkt_dev->dst_min, buf, len);
  2058. pkt_dev->daddr_min = in_aton(pkt_dev->dst_min);
  2059. pkt_dev->cur_daddr = pkt_dev->daddr_min;
  2060. }
  2061. @@ -1286,7 +1286,7 @@ static ssize_t pktgen_if_write(struct file *file,
  2062. buf[len] = 0;
  2063. if (strcmp(buf, pkt_dev->dst_max) != 0) {
  2064. memset(pkt_dev->dst_max, 0, sizeof(pkt_dev->dst_max));
  2065. - strncpy(pkt_dev->dst_max, buf, len);
  2066. + strscpy(pkt_dev->dst_max, buf, len);
  2067. pkt_dev->daddr_max = in_aton(pkt_dev->dst_max);
  2068. pkt_dev->cur_daddr = pkt_dev->daddr_max;
  2069. }
  2070. @@ -1395,7 +1395,7 @@ static ssize_t pktgen_if_write(struct file *file,
  2071. buf[len] = 0;
  2072. if (strcmp(buf, pkt_dev->src_min) != 0) {
  2073. memset(pkt_dev->src_min, 0, sizeof(pkt_dev->src_min));
  2074. - strncpy(pkt_dev->src_min, buf, len);
  2075. + strscpy(pkt_dev->src_min, buf, len);
  2076. pkt_dev->saddr_min = in_aton(pkt_dev->src_min);
  2077. pkt_dev->cur_saddr = pkt_dev->saddr_min;
  2078. }
  2079. @@ -1415,7 +1415,7 @@ static ssize_t pktgen_if_write(struct file *file,
  2080. buf[len] = 0;
  2081. if (strcmp(buf, pkt_dev->src_max) != 0) {
  2082. memset(pkt_dev->src_max, 0, sizeof(pkt_dev->src_max));
  2083. - strncpy(pkt_dev->src_max, buf, len);
  2084. + strscpy(pkt_dev->src_max, buf, len);
  2085. pkt_dev->saddr_max = in_aton(pkt_dev->src_max);
  2086. pkt_dev->cur_saddr = pkt_dev->saddr_max;
  2087. }
  2088. diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c
  2089. index d786a8441bce..30f9cb9bc72b 100644
  2090. --- a/net/ipv4/ip_tunnel.c
  2091. +++ b/net/ipv4/ip_tunnel.c
  2092. @@ -261,7 +261,7 @@ static struct net_device *__ip_tunnel_create(struct net *net,
  2093. goto failed;
  2094. }
  2095. strlcpy(name, ops->kind, IFNAMSIZ);
  2096. - strncat(name, "%d", 2);
  2097. + strlcat(name, "%d", IFNAMSIZ);
  2098. }
  2099.  
  2100. ASSERT_RTNL();
  2101. diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c
  2102. index 975a85a48d39..74ab9036d3ab 100644
  2103. --- a/net/netfilter/ipset/ip_set_core.c
  2104. +++ b/net/netfilter/ipset/ip_set_core.c
  2105. @@ -1167,7 +1167,7 @@ static int ip_set_rename(struct net *net, struct sock *ctnl,
  2106. goto out;
  2107. }
  2108. }
  2109. - strncpy(set->name, name2, IPSET_MAXNAMELEN);
  2110. + strscpy(set->name, name2, IPSET_MAXNAMELEN);
  2111.  
  2112. out:
  2113. read_unlock_bh(&ip_set_ref_lock);
  2114. diff --git a/net/netfilter/nfnetlink_acct.c b/net/netfilter/nfnetlink_acct.c
  2115. index 88d427f9f9e6..4a2df6f91177 100644
  2116. --- a/net/netfilter/nfnetlink_acct.c
  2117. +++ b/net/netfilter/nfnetlink_acct.c
  2118. @@ -115,7 +115,7 @@ static int nfnl_acct_new(struct net *net, struct sock *nfnl,
  2119. nfacct->flags = flags;
  2120. }
  2121.  
  2122. - strncpy(nfacct->name, nla_data(tb[NFACCT_NAME]), NFACCT_NAME_MAX);
  2123. + strscpy(nfacct->name, nla_data(tb[NFACCT_NAME]), NFACCT_NAME_MAX);
  2124.  
  2125. if (tb[NFACCT_BYTES]) {
  2126. atomic64_set(&nfacct->bytes,
  2127. diff --git a/net/netfilter/nfnetlink_cthelper.c b/net/netfilter/nfnetlink_cthelper.c
  2128. index d33ce6d5ebce..e42d1f2abe51 100644
  2129. --- a/net/netfilter/nfnetlink_cthelper.c
  2130. +++ b/net/netfilter/nfnetlink_cthelper.c
  2131. @@ -234,7 +234,7 @@ nfnl_cthelper_create(const struct nlattr * const tb[],
  2132. if (ret < 0)
  2133. goto err1;
  2134.  
  2135. - strncpy(helper->name, nla_data(tb[NFCTH_NAME]), NF_CT_HELPER_NAME_LEN);
  2136. + strscpy(helper->name, nla_data(tb[NFCTH_NAME]), NF_CT_HELPER_NAME_LEN);
  2137. size = ntohl(nla_get_be32(tb[NFCTH_PRIV_DATA_LEN]));
  2138. if (size > FIELD_SIZEOF(struct nf_conn_help, data)) {
  2139. ret = -ENOMEM;
  2140. diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
  2141. index f3d2e83313e1..284fb3f46693 100644
  2142. --- a/net/tipc/bearer.c
  2143. +++ b/net/tipc/bearer.c
  2144. @@ -136,10 +136,7 @@ static int bearer_name_validate(const char *name,
  2145. u32 if_len;
  2146.  
  2147. /* copy bearer name & ensure length is OK */
  2148. - name_copy[TIPC_MAX_BEARER_NAME - 1] = 0;
  2149. - /* need above in case non-Posix strncpy() doesn't pad with nulls */
  2150. - strncpy(name_copy, name, TIPC_MAX_BEARER_NAME);
  2151. - if (name_copy[TIPC_MAX_BEARER_NAME - 1] != 0)
  2152. + if (strscpy(name_copy, name, TIPC_MAX_BEARER_NAME) < 0)
  2153. return 0;
  2154.  
  2155. /* ensure all component parts of bearer name are present */
  2156. diff --git a/net/tipc/topsrv.c b/net/tipc/topsrv.c
  2157. index c8e34ef22c30..735149ae75fc 100644
  2158. --- a/net/tipc/topsrv.c
  2159. +++ b/net/tipc/topsrv.c
  2160. @@ -657,7 +657,7 @@ int tipc_topsrv_start(struct net *net)
  2161. srv->max_rcvbuf_size = sizeof(struct tipc_subscr);
  2162. INIT_WORK(&srv->awork, tipc_topsrv_accept);
  2163.  
  2164. - strncpy(srv->name, name, strlen(name) + 1);
  2165. + strscpy(srv->name, name, sizeof(srv->name));
  2166. tn->topsrv = srv;
  2167. atomic_set(&tn->subscription_count, 0);
  2168.  
  2169. diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
  2170. index 754971d95b8d..d95bb48154d2 100644
  2171. --- a/security/selinux/hooks.c
  2172. +++ b/security/selinux/hooks.c
  2173. @@ -6481,7 +6481,7 @@ static int selinux_ib_endport_manage_subnet(void *ib_sec, const char *dev_name,
  2174. return err;
  2175.  
  2176. ad.type = LSM_AUDIT_DATA_IBENDPORT;
  2177. - strncpy(ibendport.dev_name, dev_name, sizeof(ibendport.dev_name));
  2178. + strscpy(ibendport.dev_name, dev_name, sizeof(ibendport.dev_name));
  2179. ibendport.port = port_num;
  2180. ad.u.ibendport = &ibendport;
  2181. return avc_has_perm(sec->sid, sid,
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement