struct video_device *vdev = video_devdata(file);
        struct saa7146_dev *dev = ((struct saa7146_fh *)fh)->dev;
 
-       strcpy((char *)cap->driver, "saa7146 v4l2");
+       strscpy((char *)cap->driver, "saa7146 v4l2", sizeof(cap->driver));
        strscpy((char *)cap->card, dev->ext->name, sizeof(cap->card));
        sprintf((char *)cap->bus_info, "PCI:%s", pci_name(dev->pci));
        cap->device_caps =
 
                struct dvb_frontend_info *info = parg;
                memset(info, 0, sizeof(*info));
 
-               strcpy(info->name, fe->ops.info.name);
+               strscpy(info->name, fe->ops.info.name, sizeof(info->name));
                info->symbol_rate_min = fe->ops.info.symbol_rate_min;
                info->symbol_rate_max = fe->ops.info.symbol_rate_max;
                info->symbol_rate_tolerance = fe->ops.info.symbol_rate_tolerance;
 
 
        switch (state->id) {
        case ID_VP310:
-               strcpy(state->frontend.ops.info.name, "Zarlink VP310 DVB-S");
+               strscpy(state->frontend.ops.info.name, "Zarlink VP310 DVB-S",
+                       sizeof(state->frontend.ops.info.name));
                state->xtal = MT312_PLL_CLK;
                state->freq_mult = 9;
                break;
        case ID_MT312:
-               strcpy(state->frontend.ops.info.name, "Zarlink MT312 DVB-S");
+               strscpy(state->frontend.ops.info.name, "Zarlink MT312 DVB-S",
+                       sizeof(state->frontend.ops.info.name));
                state->xtal = MT312_PLL_CLK;
                state->freq_mult = 6;
                break;
        case ID_ZL10313:
-               strcpy(state->frontend.ops.info.name, "Zarlink ZL10313 DVB-S");
+               strscpy(state->frontend.ops.info.name, "Zarlink ZL10313 DVB-S",
+                       sizeof(state->frontend.ops.info.name));
                state->xtal = MT312_PLL_CLK_10_111;
                state->freq_mult = 9;
                break;
 
        state->id = state->id & 0x0f;
        switch (state->id) {
        case ID_ZL10039:
-               strcpy(fe->ops.tuner_ops.info.name,
-                       "Zarlink ZL10039 DVB-S tuner");
+               strscpy(fe->ops.tuner_ops.info.name,
+                       "Zarlink ZL10039 DVB-S tuner",
+                       sizeof(fe->ops.tuner_ops.info.name));
                break;
        default:
                dprintk("Chip ID=%x does not match a known type\n", state->id);
 
                dev_err(fdtv->device, "no frontend for model type %d\n",
                        fdtv->type);
        }
-       strcpy(fi->name, name);
+       strscpy(fi->name, name, sizeof(fi->name));
 
        fdtv->fe.dvb = &fdtv->adapter;
        fdtv->fe.sec_priv = fdtv;
 
        v4l2_i2c_subdev_init(&coil->subdev, client, &ad5820_ops);
        coil->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
        coil->subdev.internal_ops = &ad5820_internal_ops;
-       strcpy(coil->subdev.name, "ad5820 focus");
+       strscpy(coil->subdev.name, "ad5820 focus", sizeof(coil->subdev.name));
 
        ret = media_entity_pads_init(&coil->subdev.entity, 0, NULL);
        if (ret < 0)
 
 
        v4l2_i2c_subdev_init(&flash->subdev_led[led_no], client, &lm3560_ops);
        flash->subdev_led[led_no].flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
-       strcpy(flash->subdev_led[led_no].name, led_name);
+       strscpy(flash->subdev_led[led_no].name, led_name,
+               sizeof(flash->subdev_led[led_no].name));
        rval = lm3560_init_controls(flash, led_no);
        if (rval)
                goto err_out;
 
 
        v4l2_i2c_subdev_init(&flash->subdev_led, client, &lm3646_ops);
        flash->subdev_led.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
-       strcpy(flash->subdev_led.name, LM3646_NAME);
+       strscpy(flash->subdev_led.name, LM3646_NAME,
+               sizeof(flash->subdev_led.name));
        rval = lm3646_init_controls(flash);
        if (rval)
                goto err_out;
 
                return ret;
 
        v4l2_i2c_subdev_init(oif_sd, client, &oif_subdev_ops);
-       strcpy(oif_sd->name, "S5C73M3-OIF");
+       strscpy(oif_sd->name, "S5C73M3-OIF", sizeof(oif_sd->name));
 
        oif_sd->internal_ops = &oif_internal_ops;
        oif_sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
                return -ENOMEM;
 
        sd = &info->sd;
-       strcpy(sd->name, MODULE_NAME);
+       strscpy(sd->name, MODULE_NAME, sizeof(sd->name));
        info->pdata = client->dev.platform_data;
 
        v4l2_i2c_subdev_init(sd, client, &sr030pc30_ops);
 
        t->rxsubchans = V4L2_TUNER_SUB_MONO;
        t->capability = V4L2_TUNER_CAP_NORM;
        bttv_call_all(btv, tuner, g_tuner, t);
-       strcpy(t->name, "Television");
+       strscpy(t->name, "Television", sizeof(t->name));
        t->type       = V4L2_TUNER_ANALOG_TV;
        if (btread(BT848_DSTATUS)&BT848_DSTATUS_HLOC)
                t->signal = 0xffff;
 
        if (0 != t->index)
                return -EINVAL;
-       strcpy(t->name, "Radio");
+       strscpy(t->name, "Radio", sizeof(t->name));
        t->type = V4L2_TUNER_RADIO;
        radio_enable(btv);
 
 
                return -EINVAL;
        if (0 != t->index)
                return -EINVAL;
-       strcpy(t->name, "Television");
+       strscpy(t->name, "Television", sizeof(t->name));
        call_all(dev, tuner, g_tuner, t);
 
        dprintk(1, "VIDIOC_G_TUNER: tuner type %d\n", t->type);
 
        if (err < 0)
                return err;
        pcm->private_data = chip;
-       strcpy(pcm->name, name);
+       strscpy(pcm->name, name, sizeof(pcm->name));
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cx23885_pcm_ops);
 
        return 0;
        if (err < 0)
                goto error;
 
-       strcpy(card->driver, "CX23885");
+       strscpy(card->driver, "CX23885", sizeof(card->driver));
        sprintf(card->shortname, "Conexant CX23885");
        sprintf(card->longname, "%s at %s", card->shortname, dev->name);
 
 
        struct cx23885_dev *dev = video_drvdata(file);
        struct video_device *vdev = video_devdata(file);
 
-       strcpy(cap->driver, "cx23885");
+       strscpy(cap->driver, "cx23885", sizeof(cap->driver));
        strscpy(cap->card, cx23885_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci));
 
        i->index = n;
        i->type  = V4L2_INPUT_TYPE_CAMERA;
-       strcpy(i->name, iname[INPUT(n)->type]);
+       strscpy(i->name, iname[INPUT(n)->type], sizeof(i->name));
        i->std = CX23885_NORMS;
        if ((CX23885_VMUX_TELEVISION == INPUT(n)->type) ||
                (CX23885_VMUX_CABLE == INPUT(n)->type)) {
 
        memset(i, 0, sizeof(*i));
        i->index = n;
-       strcpy(i->name, iname[n]);
+       strscpy(i->name, iname[n], sizeof(i->name));
        i->capability = V4L2_AUDCAP_STEREO;
        return 0;
 
        if (0 != t->index)
                return -EINVAL;
 
-       strcpy(t->name, "Television");
+       strscpy(t->name, "Television", sizeof(t->name));
 
        call_all(dev, tuner, g_tuner, t);
        return 0;
 
        /* Initialize VBI template */
        cx23885_vbi_template = cx23885_video_template;
-       strcpy(cx23885_vbi_template.name, "cx23885-vbi");
+       strscpy(cx23885_vbi_template.name, "cx23885-vbi",
+               sizeof(cx23885_vbi_template.name));
 
        dev->tvnorm = V4L2_STD_NTSC_M;
        dev->fmt = format_by_fourcc(V4L2_PIX_FMT_YUYV);
 
        }
        pcm->private_data = chip;
        pcm->info_flags = 0;
-       strcpy(pcm->name, name);
+       strscpy(pcm->name, name, sizeof(pcm->name));
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cx25821_pcm_ops);
 
        return 0;
                return err;
        }
 
-       strcpy(card->driver, "cx25821");
+       strscpy(card->driver, "cx25821", sizeof(card->driver));
 
        /* Card "creation" */
        chip = card->private_data;
                goto error;
        }
 
-       strcpy(card->shortname, "cx25821");
+       strscpy(card->shortname, "cx25821", sizeof(card->shortname));
        sprintf(card->longname, "%s at 0x%lx irq %d", chip->dev->name,
                chip->iobase, chip->irq);
-       strcpy(card->mixername, "CX25821");
+       strscpy(card->mixername, "CX25821", sizeof(card->mixername));
 
        pr_info("%s/%i: ALSA support for cx25821 boards\n", card->driver,
                devno);
 
                        V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
        const u32 cap_output = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_READWRITE;
 
-       strcpy(cap->driver, "cx25821");
+       strscpy(cap->driver, "cx25821", sizeof(cap->driver));
        strscpy(cap->card, cx25821_boards[dev->board].name, sizeof(cap->card));
        sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci));
        if (chan->id >= VID_CHANNEL_NUM)
 
        i->type = V4L2_INPUT_TYPE_CAMERA;
        i->std = CX25821_NORMS;
-       strcpy(i->name, "Composite");
+       strscpy(i->name, "Composite", sizeof(i->name));
        return 0;
 }
 
 
        o->type = V4L2_INPUT_TYPE_CAMERA;
        o->std = CX25821_NORMS;
-       strcpy(o->name, "Composite");
+       strscpy(o->name, "Composite", sizeof(o->name));
        return 0;
 }
 
 
        if (err < 0)
                return err;
        pcm->private_data = chip;
-       strcpy(pcm->name, name);
+       strscpy(pcm->name, name, sizeof(pcm->name));
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cx88_pcm_ops);
 
        return 0;
                        goto error;
        }
 
-       strcpy(card->driver, "CX88x");
+       strscpy(card->driver, "CX88x", sizeof(card->driver));
        sprintf(card->shortname, "Conexant CX%x", pci->device);
        sprintf(card->longname, "%s at %#llx",
                card->shortname,
                (unsigned long long)pci_resource_start(pci, 0));
-       strcpy(card->mixername, "CX88");
+       strscpy(card->mixername, "CX88", sizeof(card->mixername));
 
        dprintk(0, "%s/%i: ALSA support for cx2388x boards\n",
                card->driver, devno);
 
        struct cx8802_dev *dev = video_drvdata(file);
        struct cx88_core *core = dev->core;
 
-       strcpy(cap->driver, "cx88_blackbird");
+       strscpy(cap->driver, "cx88_blackbird", sizeof(cap->driver));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
        return cx88_querycap(file, core, cap);
 }
        if (t->index != 0)
                return -EINVAL;
 
-       strcpy(t->name, "Television");
+       strscpy(t->name, "Television", sizeof(t->name));
        t->capability = V4L2_TUNER_CAP_NORM;
        t->rangehigh  = 0xffffffffUL;
        call_all(core, tuner, g_tuner, t);
 
        core->height  = 240;
        core->field   = V4L2_FIELD_INTERLACED;
 
-       strcpy(core->v4l2_dev.name, core->name);
+       strscpy(core->v4l2_dev.name, core->name, sizeof(core->v4l2_dev.name));
        if (v4l2_device_register(NULL, &core->v4l2_dev)) {
                kfree(core);
                return NULL;
 
        struct cx8800_dev *dev = video_drvdata(file);
        struct cx88_core *core = dev->core;
 
-       strcpy(cap->driver, "cx8800");
+       strscpy(cap->driver, "cx8800", sizeof(cap->driver));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
        return cx88_querycap(file, core, cap);
 }
        if (!INPUT(n).type)
                return -EINVAL;
        i->type  = V4L2_INPUT_TYPE_CAMERA;
-       strcpy(i->name, iname[INPUT(n).type]);
+       strscpy(i->name, iname[INPUT(n).type], sizeof(i->name));
        if ((INPUT(n).type == CX88_VMUX_TELEVISION) ||
            (INPUT(n).type == CX88_VMUX_CABLE))
                i->type = V4L2_INPUT_TYPE_TUNER;
        if (t->index != 0)
                return -EINVAL;
 
-       strcpy(t->name, "Television");
+       strscpy(t->name, "Television", sizeof(t->name));
        t->capability = V4L2_TUNER_CAP_NORM;
        t->rangehigh  = 0xffffffffUL;
        call_all(core, tuner, g_tuner, t);
        if (unlikely(t->index > 0))
                return -EINVAL;
 
-       strcpy(t->name, "Radio");
+       strscpy(t->name, "Radio", sizeof(t->name));
 
        call_all(core, tuner, g_tuner, t);
        return 0;
 
 
        /* i2c */
        i2c_set_adapdata(&dev->i2c_adap, dev);
-       strcpy(dev->i2c_adap.name, DRIVER_NAME);
+       strscpy(dev->i2c_adap.name, DRIVER_NAME, sizeof(dev->i2c_adap.name));
        dev->i2c_adap.owner = THIS_MODULE;
        dev->i2c_adap.dev.parent = &pdev->dev;
        dev->i2c_adap.algo = &dm1105_algo;
                goto err_dm1105_hw_exit;
 
        i2c_set_adapdata(&dev->i2c_bb_adap, dev);
-       strcpy(dev->i2c_bb_adap.name, DM1105_I2C_GPIO_NAME);
+       strscpy(dev->i2c_bb_adap.name, DM1105_I2C_GPIO_NAME,
+               sizeof(dev->i2c_bb_adap.name));
        dev->i2c_bb_adap.owner = THIS_MODULE;
        dev->i2c_bb_adap.dev.parent = &pdev->dev;
        dev->i2c_bb_adap.algo_data = &dev->i2c_bit;
 
 {
        struct dt3155_priv *pd = video_drvdata(filp);
 
-       strcpy(cap->driver, DT3155_NAME);
-       strcpy(cap->card, DT3155_NAME " frame grabber");
+       strscpy(cap->driver, DT3155_NAME, sizeof(cap->driver));
+       strscpy(cap->card, DT3155_NAME " frame grabber", sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(pd->pdev));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
                V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
        if (f->index)
                return -EINVAL;
        f->pixelformat = V4L2_PIX_FMT_GREY;
-       strcpy(f->description, "8-bit Greyscale");
+       strscpy(f->description, "8-bit Greyscale", sizeof(f->description));
        return 0;
 }
 
 
 static int vidioc_querycap(struct file *file, void *fh,
                                struct v4l2_capability *cap)
 {
-       strcpy(cap->driver, "meye");
-       strcpy(cap->card, "meye");
+       strscpy(cap->driver, "meye", sizeof(cap->driver));
+       strscpy(cap->card, "meye", sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(meye.mchip_dev));
 
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
        if (i->index != 0)
                return -EINVAL;
 
-       strcpy(i->name, "Camera");
+       strscpy(i->name, "Camera", sizeof(i->name));
        i->type = V4L2_INPUT_TYPE_CAMERA;
 
        return 0;
        if (f->index == 0) {
                /* standard YUV 422 capture */
                f->flags = 0;
-               strcpy(f->description, "YUV422");
+               strscpy(f->description, "YUV422", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_YUYV;
        } else {
                /* compressed MJPEG capture */
                f->flags = V4L2_FMT_FLAG_COMPRESSED;
-               strcpy(f->description, "MJPEG");
+               strscpy(f->description, "MJPEG", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_MJPEG;
        }
 
 
 
        i2c_set_adapdata(adap, &(dev->channel[dev_nr]));
 
-       strcpy(adap->name, "nGene");
+       strscpy(adap->name, "nGene", sizeof(adap->name));
 
        adap->algo = &ngene_i2c_algo;
        adap->algo_data = (void *)&(dev->channel[dev_nr]);
 
 
        /* i2c */
        i2c_set_adapdata(&pluto->i2c_adap, pluto);
-       strcpy(pluto->i2c_adap.name, DRIVER_NAME);
+       strscpy(pluto->i2c_adap.name, DRIVER_NAME, sizeof(pluto->i2c_adap.name));
        pluto->i2c_adap.owner = THIS_MODULE;
        pluto->i2c_adap.dev.parent = &pdev->dev;
        pluto->i2c_adap.algo_data = &pluto->i2c_bit;
 
        i2c_adap->algo = &pt1_i2c_algo;
        i2c_adap->algo_data = NULL;
        i2c_adap->dev.parent = &pdev->dev;
-       strcpy(i2c_adap->name, DRIVER_NAME);
+       strscpy(i2c_adap->name, DRIVER_NAME, sizeof(i2c_adap->name));
        i2c_set_adapdata(i2c_adap, pt1);
        ret = i2c_add_adapter(i2c_adap);
        if (ret < 0)
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_card_saa7134_capture_ops);
        pcm->private_data = saa7134;
        pcm->info_flags = 0;
-       strcpy(pcm->name, "SAA7134 PCM");
+       strscpy(pcm->name, "SAA7134 PCM", sizeof(pcm->name));
        return 0;
 }
 
        unsigned int idx;
        int err, addr;
 
-       strcpy(card->mixername, "SAA7134 Mixer");
+       strscpy(card->mixername, "SAA7134 Mixer", sizeof(card->mixername));
 
        for (idx = 0; idx < ARRAY_SIZE(snd_saa7134_volume_controls); idx++) {
                kcontrol = snd_ctl_new1(&snd_saa7134_volume_controls[idx],
        if (err < 0)
                return err;
 
-       strcpy(card->driver, "SAA7134");
+       strscpy(card->driver, "SAA7134", sizeof(card->driver));
 
        /* Card "creation" */
 
 
        /* End of "creation" */
 
-       strcpy(card->shortname, "SAA7134");
+       strscpy(card->shortname, "SAA7134", sizeof(card->shortname));
        sprintf(card->longname, "%s at 0x%lx irq %d",
                chip->dev->name, chip->iobase, chip->irq);
 
 
 {
        dev->i2c_adap = saa7134_adap_template;
        dev->i2c_adap.dev.parent = &dev->pci->dev;
-       strcpy(dev->i2c_adap.name,dev->name);
+       strscpy(dev->i2c_adap.name, dev->name, sizeof(dev->i2c_adap.name));
        dev->i2c_adap.algo_data = dev;
        i2c_set_adapdata(&dev->i2c_adap, &dev->v4l2_dev);
        i2c_add_adapter(&dev->i2c_adap);
 
        if (card_in(dev, i->index).type == SAA7134_NO_INPUT)
                return -EINVAL;
        i->index = n;
-       strcpy(i->name, saa7134_input_name[card_in(dev, n).type]);
+       strscpy(i->name, saa7134_input_name[card_in(dev, n).type],
+               sizeof(i->name));
        switch (card_in(dev, n).type) {
        case SAA7134_INPUT_TV:
        case SAA7134_INPUT_TV_MONO:
 
        unsigned int tuner_type = dev->tuner_type;
 
-       strcpy(cap->driver, "saa7134");
+       strscpy(cap->driver, "saa7134", sizeof(cap->driver));
        strscpy(cap->card, saa7134_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
        if (n == SAA7134_INPUT_MAX)
                return -EINVAL;
        if (card_in(dev, n).type != SAA7134_NO_INPUT) {
-               strcpy(t->name, "Television");
+               strscpy(t->name, "Television", sizeof(t->name));
                t->type = V4L2_TUNER_ANALOG_TV;
                saa_call_all(dev, tuner, g_tuner, t);
                t->capability = V4L2_TUNER_CAP_NORM |
        if (0 != t->index)
                return -EINVAL;
 
-       strcpy(t->name, "Radio");
+       strscpy(t->name, "Radio", sizeof(t->name));
 
        saa_call_all(dev, tuner, g_tuner, t);
        t->audmode &= V4L2_TUNER_MODE_MONO | V4L2_TUNER_MODE_STEREO;
 
        int i;
 
        memset(hg, 0, sizeof(struct saa7164_histogram));
-       strcpy(hg->name, name);
+       strscpy(hg->name, name, sizeof(hg->name));
 
        /* First 30ms x 1ms */
        for (i = 0; i < 30; i++)
 
        if (i->index >= 7)
                return -EINVAL;
 
-       strcpy(i->name, inputs[i->index]);
+       strscpy(i->name, inputs[i->index], sizeof(i->name));
 
        if (i->index == 0)
                i->type = V4L2_INPUT_TYPE_TUNER;
        if (0 != t->index)
                return -EINVAL;
 
-       strcpy(t->name, "tuner");
+       strscpy(t->name, "tuner", sizeof(t->name));
        t->capability = V4L2_TUNER_CAP_NORM | V4L2_TUNER_CAP_STEREO;
        t->rangelow = SAA7164_TV_MIN_FREQ;
        t->rangehigh = SAA7164_TV_MAX_FREQ;
        struct saa7164_port *port = fh->port;
        struct saa7164_dev *dev = port->dev;
 
-       strcpy(cap->driver, dev->name);
+       strscpy(cap->driver, dev->name, sizeof(cap->driver));
        strscpy(cap->card, saa7164_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
 
        struct saa7164_port *port = fh->port;
        struct saa7164_dev *dev = port->dev;
 
-       strcpy(cap->driver, dev->name);
+       strscpy(cap->driver, dev->name, sizeof(cap->driver));
        strscpy(cap->card, saa7164_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
 
        /* i2c bus 0 */
        smi_i2c_cfg(dev, I2C_A_SW_CTL);
        i2c_set_adapdata(&dev->i2c_bus[0], dev);
-       strcpy(dev->i2c_bus[0].name, "SMI-I2C0");
+       strscpy(dev->i2c_bus[0].name, "SMI-I2C0", sizeof(dev->i2c_bus[0].name));
        dev->i2c_bus[0].owner = THIS_MODULE;
        dev->i2c_bus[0].dev.parent = &dev->pci_dev->dev;
        dev->i2c_bus[0].algo_data = &dev->i2c_bit[0];
        /* i2c bus 1 */
        smi_i2c_cfg(dev, I2C_B_SW_CTL);
        i2c_set_adapdata(&dev->i2c_bus[1], dev);
-       strcpy(dev->i2c_bus[1].name, "SMI-I2C1");
+       strscpy(dev->i2c_bus[1].name, "SMI-I2C1", sizeof(dev->i2c_bus[1].name));
        dev->i2c_bus[1].owner = THIS_MODULE;
        dev->i2c_bus[1].dev.parent = &dev->pci_dev->dev;
        dev->i2c_bus[1].algo_data = &dev->i2c_bit[1];
 
 
        snd_pcm_chip(pcm) = solo_dev;
        pcm->info_flags = 0;
-       strcpy(pcm->name, card->shortname);
+       strscpy(pcm->name, card->shortname, sizeof(pcm->name));
 
        for (i = 0, ss = pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream;
             ss; ss = ss->next, i++)
 
        card = solo_dev->snd_card;
 
-       strcpy(card->driver, SOLO6X10_NAME);
-       strcpy(card->shortname, "SOLO-6x10 Audio");
+       strscpy(card->driver, SOLO6X10_NAME, sizeof(card->driver));
+       strscpy(card->shortname, "SOLO-6x10 Audio", sizeof(card->shortname));
        sprintf(card->longname, "%s on %s IRQ %d", card->shortname,
                pci_name(solo_dev->pdev), solo_dev->pdev->irq);
 
                goto snd_error;
 
        /* Mixer controls */
-       strcpy(card->mixername, "SOLO-6x10");
+       strscpy(card->mixername, "SOLO-6x10", sizeof(card->mixername));
        kctl = snd_solo_capture_volume;
        kctl.count = solo_dev->nr_chans;
 
 
        struct solo_enc_dev *solo_enc = video_drvdata(file);
        struct solo_dev *solo_dev = solo_enc->solo_dev;
 
-       strcpy(cap->driver, SOLO6X10_NAME);
+       strscpy(cap->driver, SOLO6X10_NAME, sizeof(cap->driver));
        snprintf(cap->card, sizeof(cap->card), "Softlogic 6x10 Enc %d",
                 solo_enc->ch);
        snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
                switch (dev_type) {
                case SOLO_DEV_6010:
                        f->pixelformat = V4L2_PIX_FMT_MPEG4;
-                       strcpy(f->description, "MPEG-4 part 2");
+                       strscpy(f->description, "MPEG-4 part 2",
+                               sizeof(f->description));
                        break;
                case SOLO_DEV_6110:
                        f->pixelformat = V4L2_PIX_FMT_H264;
-                       strcpy(f->description, "H.264");
+                       strscpy(f->description, "H.264", sizeof(f->description));
                        break;
                }
                break;
        case 1:
                f->pixelformat = V4L2_PIX_FMT_MJPEG;
-               strcpy(f->description, "MJPEG");
+               strscpy(f->description, "MJPEG", sizeof(f->description));
                break;
        default:
                return -EINVAL;
                                        solo_enc->md_thresholds->p_new.p_u16);
                break;
        case V4L2_CID_OSD_TEXT:
-               strcpy(solo_enc->osd_text, ctrl->p_new.p_char);
+               strscpy(solo_enc->osd_text, ctrl->p_new.p_char,
+                       sizeof(solo_enc->osd_text));
                return solo_osd_print(solo_enc);
        default:
                return -EINVAL;
 
 {
        struct solo_dev *solo_dev = video_drvdata(file);
 
-       strcpy(cap->driver, SOLO6X10_NAME);
-       strcpy(cap->card, "Softlogic 6x10");
+       strscpy(cap->driver, SOLO6X10_NAME, sizeof(cap->driver));
+       strscpy(cap->card, "Softlogic 6x10", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
                 pci_name(solo_dev->pdev));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
 
 {
        struct sta2x11_vip *vip = video_drvdata(file);
 
-       strcpy(cap->driver, KBUILD_MODNAME);
-       strcpy(cap->card, KBUILD_MODNAME);
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, KBUILD_MODNAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
                 pci_name(vip->pdev));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
        if (f->index != 0)
                return -EINVAL;
 
-       strcpy(f->description, "4:2:2, packed, UYVY");
+       strscpy(f->description, "4:2:2, packed, UYVY", sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_UYVY;
        f->flags = 0;
        return 0;
 
                return -EINVAL;
 
        memset(t, 0, sizeof(*t));
-       strcpy((char *)t->name, "Television");
+       strscpy((char *)t->name, "Television", sizeof(t->name));
 
        t->type = V4L2_TUNER_ANALOG_TV;
        t->capability = V4L2_TUNER_CAP_NORM | V4L2_TUNER_CAP_STEREO |
 
                sizeof(budget->i2c_adap.name));
 
        saa7146_i2c_adapter_prepare(dev, &budget->i2c_adap, SAA7146_I2C_BUS_BIT_RATE_120);
-       strcpy(budget->i2c_adap.name, budget->card->name);
+       strscpy(budget->i2c_adap.name, budget->card->name,
+               sizeof(budget->i2c_adap.name));
 
        if (i2c_add_adapter(&budget->i2c_adap) < 0) {
                ret = -ENOMEM;
 
 {
        struct tw5864_input *input = video_drvdata(file);
 
-       strcpy(cap->driver, "tw5864");
+       strscpy(cap->driver, "tw5864", sizeof(cap->driver));
        snprintf(cap->card, sizeof(cap->card), "TW5864 Encoder %d",
                 input->nr);
        sprintf(cap->bus_info, "PCI:%s", pci_name(input->root->pci));
 
 {
        struct tw68_dev *dev = video_drvdata(file);
 
-       strcpy(cap->driver, "tw68");
+       strscpy(cap->driver, "tw68", sizeof(cap->driver));
        strscpy(cap->card, "Techwell Capture Card",
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
 
 
                /* we only support camera */
                sdinfo->inputs[0].index = i;
-               strcpy(sdinfo->inputs[0].name, "Camera");
+               strscpy(sdinfo->inputs[0].name, "Camera",
+                       sizeof(sdinfo->inputs[0].name));
                sdinfo->inputs[0].type = V4L2_INPUT_TYPE_CAMERA;
                sdinfo->inputs[0].std = V4L2_STD_ALL;
                sdinfo->inputs[0].capabilities = V4L2_IN_CAP_STD;
 
 {
        struct isc_device *isc = video_drvdata(file);
 
-       strcpy(cap->driver, ATMEL_ISC_NAME);
-       strcpy(cap->card, "Atmel Image Sensor Controller");
+       strscpy(cap->driver, ATMEL_ISC_NAME, sizeof(cap->driver));
+       strscpy(cap->card, "Atmel Image Sensor Controller", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "platform:%s", isc->v4l2_dev.name);
 
 
        inp->type = V4L2_INPUT_TYPE_CAMERA;
        inp->std = 0;
-       strcpy(inp->name, "Camera");
+       strscpy(inp->name, "Camera", sizeof(inp->name));
 
        return 0;
 }
 
        fmt->index = index;
        fmt->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
        if (index == 0) {
-               strcpy(fmt->description, "YUV 4:2:2 - UYVY");
+               strscpy(fmt->description, "YUV 4:2:2 - UYVY",
+                       sizeof(fmt->description));
                fmt->pixelformat = V4L2_PIX_FMT_UYVY;
        } else {
-               strcpy(fmt->description, "Y/CbCr 4:2:0");
+               strscpy(fmt->description, "Y/CbCr 4:2:0",
+                       sizeof(fmt->description));
                fmt->pixelformat = V4L2_PIX_FMT_NV12;
        }
 
 
 
        v4l2_subdev_init(&venc->sd, &venc_ops);
 
-       strcpy(venc->sd.name, venc_name);
+       strscpy(venc->sd.name, venc_name, sizeof(venc->sd.name));
        if (v4l2_device_register_subdev(v4l2_dev, &venc->sd) < 0) {
                v4l2_err(v4l2_dev,
                        "vpbe unable to register venc sub device\n");
 
        /* Fill in the information about format */
        if (ch->vpifparams.iface.if_type == VPIF_IF_RAW_BAYER) {
                fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-               strcpy(fmt->description, "Raw Mode -Bayer Pattern GrRBGb");
+               strscpy(fmt->description, "Raw Mode -Bayer Pattern GrRBGb",
+                       sizeof(fmt->description));
                fmt->pixelformat = V4L2_PIX_FMT_SBGGR8;
        } else {
                fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-               strcpy(fmt->description, "YCbCr4:2:2 Semi-Planar");
+               strscpy(fmt->description, "YCbCr4:2:2 Semi-Planar",
+                       sizeof(fmt->description));
                fmt->pixelformat = V4L2_PIX_FMT_NV16;
        }
        return 0;
 
 
        /* Fill in the information about format */
        fmt->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-       strcpy(fmt->description, "YCbCr4:2:2 YC Planar");
+       strscpy(fmt->description, "YCbCr4:2:2 YC Planar",
+               sizeof(fmt->description));
        fmt->pixelformat = V4L2_PIX_FMT_YUV422P;
        fmt->flags = 0;
        return 0;
 
 static int vidioc_querycap(struct file *file, void *priv,
                           struct v4l2_capability *cap)
 {
-       strcpy(cap->driver, "viu");
-       strcpy(cap->card, "viu");
-       strcpy(cap->bus_info, "platform:viu");
+       strscpy(cap->driver, "viu", sizeof(cap->driver));
+       strscpy(cap->card, "viu", sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:viu", sizeof(cap->bus_info));
        cap->device_caps =      V4L2_CAP_VIDEO_CAPTURE |
                                V4L2_CAP_STREAMING     |
                                V4L2_CAP_VIDEO_OVERLAY |
 
        inp->type = V4L2_INPUT_TYPE_CAMERA;
        inp->std = fh->dev->vdev->tvnorms;
-       strcpy(inp->name, "Camera");
+       strscpy(inp->name, "Camera", sizeof(inp->name));
        return 0;
 }
 
 
                return -ENOMEM;
        adap->owner = THIS_MODULE;
        adap->algo = &cafe_smbus_algo;
-       strcpy(adap->name, "cafe_ccic");
+       strscpy(adap->name, "cafe_ccic", sizeof(adap->name));
        adap->dev.parent = &cam->pdev->dev;
        i2c_set_adapdata(adap, cam);
        ret = i2c_add_adapter(adap);
 
 {
        struct mcam_camera *cam = video_drvdata(file);
 
-       strcpy(cap->driver, "marvell_ccic");
-       strcpy(cap->card, "marvell_ccic");
+       strscpy(cap->driver, "marvell_ccic", sizeof(cap->driver));
+       strscpy(cap->card, "marvell_ccic", sizeof(cap->card));
        strscpy(cap->bus_info, cam->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
                V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
                return -EINVAL;
 
        input->type = V4L2_INPUT_TYPE_CAMERA;
-       strcpy(input->name, "Camera");
+       strscpy(input->name, "Camera", sizeof(input->name));
        return 0;
 }
 
 
        /* default is camera */
        inp->type = V4L2_INPUT_TYPE_CAMERA;
        inp->std = icd->vdev->tvnorms;
-       strcpy(inp->name, "Camera");
+       strscpy(inp->name, "Camera", sizeof(inp->name));
 
        return 0;
 }
 
 
        input->type = V4L2_INPUT_TYPE_CAMERA;
        input->std = V4L2_STD_ALL; /* Not sure what should go here */
-       strcpy(input->name, "Camera");
+       strscpy(input->name, "Camera", sizeof(input->name));
        return 0;
 }
 
 static int viacam_querycap(struct file *filp, void *priv,
                struct v4l2_capability *cap)
 {
-       strcpy(cap->driver, "via-camera");
-       strcpy(cap->card, "via-camera");
+       strscpy(cap->driver, "via-camera", sizeof(cap->driver));
+       strscpy(cap->card, "via-camera", sizeof(cap->card));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
                V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 
                cec_ops_set_osd_string(msg, &disp_ctl, osd);
                switch (disp_ctl) {
                case CEC_OP_DISP_CTL_DEFAULT:
-                       strcpy(dev->osd, osd);
+                       strscpy(dev->osd, osd, sizeof(dev->osd));
                        dev->osd_jiffies = jiffies;
                        break;
                case CEC_OP_DISP_CTL_UNTIL_CLEARED:
-                       strcpy(dev->osd, osd);
+                       strscpy(dev->osd, osd, sizeof(dev->osd));
                        dev->osd_jiffies = 0;
                        break;
                case CEC_OP_DISP_CTL_CLEAR:
 
 {
        struct vivid_dev *dev = video_drvdata(file);
 
-       strcpy(cap->driver, "vivid");
-       strcpy(cap->card, "vivid");
+       strscpy(cap->driver, "vivid", sizeof(cap->driver));
+       strscpy(cap->card, "vivid", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                        "platform:%s", dev->v4l2_dev.name);
 
 
                return -EINVAL;
 
        dsbr100_getstat(radio);
-       strcpy(v->name, "FM");
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = FREQ_MIN * FREQ_MUL;
        v->rangehigh = FREQ_MAX * FREQ_MUL;
 
         * retval = ma901radio_get_stat(radio, &is_stereo, &v->signal);
         */
 
-       strcpy(v->name, "FM");
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = FREQ_MIN * FREQ_MUL;
        v->rangehigh = FREQ_MAX * FREQ_MUL;
 
        if (retval)
                return retval;
 
-       strcpy(v->name, "FM");
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = FREQ_MIN * FREQ_MUL;
        v->rangehigh = FREQ_MAX * FREQ_MUL;
 
        }
 
        /* driver constants */
-       strcpy(tuner->name, "FM");
+       strscpy(tuner->name, "FM", sizeof(tuner->name));
        tuner->type = V4L2_TUNER_RADIO;
        tuner->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO |
                            V4L2_TUNER_CAP_RDS | V4L2_TUNER_CAP_RDS_BLOCK_IO |
 
                struct v4l2_audio *audio)
 {
        memset(audio, 0, sizeof(*audio));
-       strcpy(audio->name, "Radio");
+       strscpy(audio->name, "Radio", sizeof(audio->name));
        audio->capability = V4L2_AUDCAP_STEREO;
 
        return 0;
        if (ret != 0)
                return ret;
 
-       strcpy(tuner->name, "FM");
+       strscpy(tuner->name, "FM", sizeof(tuner->name));
        tuner->type = V4L2_TUNER_RADIO;
        /* Store rangelow and rangehigh freq in unit of 62.5 Hz */
        tuner->rangelow = bottom_freq * 16;
 
        dprintk(1, "%s called\n", __func__);
 
        f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-       strcpy(f->description, "Packed YUV2");
+       strscpy(f->description, "Packed YUV2", sizeof(f->description));
 
        f->flags = 0;
        f->pixelformat = V4L2_PIX_FMT_UYVY;
                return -EINVAL;
 
        input->index = tmp;
-       strcpy(input->name, inames[AUVI_INPUT(tmp).type]);
+       strscpy(input->name, inames[AUVI_INPUT(tmp).type], sizeof(input->name));
        if ((AUVI_INPUT(tmp).type == AU0828_VMUX_TELEVISION) ||
            (AUVI_INPUT(tmp).type == AU0828_VMUX_CABLE)) {
                input->type |= V4L2_INPUT_TYPE_TUNER;
        dprintk(1, "%s called\n", __func__);
 
        if (a->index == 0)
-               strcpy(a->name, "Television");
+               strscpy(a->name, "Television", sizeof(a->name));
        else
-               strcpy(a->name, "Line in");
+               strscpy(a->name, "Line in", sizeof(a->name));
 
        a->capability = V4L2_AUDCAP_STEREO;
        return 0;
 
        a->index = dev->ctrl_ainput;
        if (a->index == 0)
-               strcpy(a->name, "Television");
+               strscpy(a->name, "Television", sizeof(a->name));
        else
-               strcpy(a->name, "Line in");
+               strscpy(a->name, "Line in", sizeof(a->name));
 
        a->capability = V4L2_AUDCAP_STEREO;
        return 0;
        dprintk(1, "%s called std_set %d dev_state %ld\n", __func__,
                dev->std_set_in_tuner_core, dev->dev_state);
 
-       strcpy(t->name, "Auvitek tuner");
+       strscpy(t->name, "Auvitek tuner", sizeof(t->name));
 
        au0828_init_tuner(dev);
        i2c_gate_ctrl(dev, 1);
        dev->vdev.lock = &dev->lock;
        dev->vdev.queue = &dev->vb_vidq;
        dev->vdev.queue->lock = &dev->vb_queue_lock;
-       strcpy(dev->vdev.name, "au0828a video");
+       strscpy(dev->vdev.name, "au0828a video", sizeof(dev->vdev.name));
 
        /* Setup the VBI device */
        dev->vbi_dev = au0828_video_template;
        dev->vbi_dev.lock = &dev->lock;
        dev->vbi_dev.queue = &dev->vb_vbiq;
        dev->vbi_dev.queue->lock = &dev->vb_vbi_queue_lock;
-       strcpy(dev->vbi_dev.name, "au0828a vbi");
+       strscpy(dev->vbi_dev.name, "au0828a vbi", sizeof(dev->vbi_dev.name));
 
        /* Init entities at the Media Controller */
        au0828_analog_create_entities(dev);
 
 {
        struct camera_data *cam = video_drvdata(file);
 
-       strcpy(vc->driver, "cpia2");
+       strscpy(vc->driver, "cpia2", sizeof(vc->driver));
 
        if (cam->params.pnp_id.product == 0x151)
-               strcpy(vc->card, "QX5 Microscope");
+               strscpy(vc->card, "QX5 Microscope", sizeof(vc->card));
        else
-               strcpy(vc->card, "CPiA2 Camera");
+               strscpy(vc->card, "CPiA2 Camera", sizeof(vc->card));
        switch (cam->params.pnp_id.device_type) {
        case DEVICE_STV_672:
                strcat(vc->card, " (672/");
 {
        if (i->index)
                return -EINVAL;
-       strcpy(i->name, "Camera");
+       strscpy(i->name, "Camera", sizeof(i->name));
        i->type = V4L2_INPUT_TYPE_CAMERA;
        return 0;
 }
        f->flags = V4L2_FMT_FLAG_COMPRESSED;
        switch(index) {
        case 0:
-               strcpy(f->description, "MJPEG");
+               strscpy(f->description, "MJPEG", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_MJPEG;
                break;
        case 1:
-               strcpy(f->description, "JPEG");
+               strscpy(f->description, "JPEG", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_JPEG;
                break;
        default:
 
                        &snd_cx231xx_pcm_capture);
        pcm->info_flags = 0;
        pcm->private_data = dev;
-       strcpy(pcm->name, "Conexant cx231xx Capture");
-       strcpy(card->driver, "Cx231xx-Audio");
-       strcpy(card->shortname, "Cx231xx Audio");
-       strcpy(card->longname, "Conexant cx231xx Audio");
+       strscpy(pcm->name, "Conexant cx231xx Capture", sizeof(pcm->name));
+       strscpy(card->driver, "Cx231xx-Audio", sizeof(card->driver));
+       strscpy(card->shortname, "Cx231xx Audio", sizeof(card->shortname));
+       strscpy(card->longname, "Conexant cx231xx Audio", sizeof(card->longname));
 
        INIT_WORK(&dev->wq_trigger, audio_trigger);
 
 
        i->index = n;
        i->type = V4L2_INPUT_TYPE_CAMERA;
 
-       strcpy(i->name, iname[INPUT(n)->type]);
+       strscpy(i->name, iname[INPUT(n)->type], sizeof(i->name));
 
        if ((CX231XX_VMUX_TELEVISION == INPUT(n)->type) ||
            (CX231XX_VMUX_CABLE == INPUT(n)->type))
        if (0 != t->index)
                return -EINVAL;
 
-       strcpy(t->name, "Tuner");
+       strscpy(t->name, "Tuner", sizeof(t->name));
 
        t->type = V4L2_TUNER_ANALOG_TV;
        t->capability = V4L2_TUNER_CAP_NORM;
        if (t->index)
                return -EINVAL;
 
-       strcpy(t->name, "Radio");
+       strscpy(t->name, "Radio", sizeof(t->name));
 
        call_all(dev, tuner, g_tuner, t);
 
 
        /* Initialize VBI template */
        cx231xx_vbi_template = cx231xx_video_template;
-       strcpy(cx231xx_vbi_template.name, "cx231xx-vbi");
+       strscpy(cx231xx_vbi_template.name, "cx231xx-vbi",
+               sizeof(cx231xx_vbi_template.name));
 
        /* Allocate and fill vbi video_device struct */
        cx231xx_vdev_init(dev, &dev->vbi_dev, &cx231xx_vbi_template, "vbi");
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_em28xx_pcm_capture);
        pcm->info_flags = 0;
        pcm->private_data = dev;
-       strcpy(pcm->name, "Empia 28xx Capture");
+       strscpy(pcm->name, "Empia 28xx Capture", sizeof(pcm->name));
 
-       strcpy(card->driver, "Em28xx-Audio");
-       strcpy(card->shortname, "Em28xx Audio");
-       strcpy(card->longname, "Empia Em28xx Audio");
+       strscpy(card->driver, "Em28xx-Audio", sizeof(card->driver));
+       strscpy(card->shortname, "Em28xx Audio", sizeof(card->shortname));
+       strscpy(card->longname, "Empia Em28xx Audio", sizeof(card->longname));
 
        INIT_WORK(&adev->wq_trigger, audio_trigger);
 
 
 
        dev->i2c_adap[bus] = em28xx_adap_template;
        dev->i2c_adap[bus].dev.parent = &dev->intf->dev;
-       strcpy(dev->i2c_adap[bus].name, dev_name(&dev->intf->dev));
+       strscpy(dev->i2c_adap[bus].name, dev_name(&dev->intf->dev),
+               sizeof(dev->i2c_adap[bus].name));
 
        dev->i2c_bus[bus].bus = bus;
        dev->i2c_bus[bus].algo_type = algo_type;
 
 
        i->type = V4L2_INPUT_TYPE_CAMERA;
 
-       strcpy(i->name, iname[INPUT(n)->type]);
+       strscpy(i->name, iname[INPUT(n)->type], sizeof(i->name));
 
        if (INPUT(n)->type == EM28XX_VMUX_TELEVISION)
                i->type = V4L2_INPUT_TYPE_TUNER;
 
        switch (a->index) {
        case EM28XX_AMUX_VIDEO:
-               strcpy(a->name, "Television");
+               strscpy(a->name, "Television", sizeof(a->name));
                break;
        case EM28XX_AMUX_LINE_IN:
-               strcpy(a->name, "Line In");
+               strscpy(a->name, "Line In", sizeof(a->name));
                break;
        case EM28XX_AMUX_VIDEO2:
-               strcpy(a->name, "Television alt");
+               strscpy(a->name, "Television alt", sizeof(a->name));
                break;
        case EM28XX_AMUX_PHONE:
-               strcpy(a->name, "Phone");
+               strscpy(a->name, "Phone", sizeof(a->name));
                break;
        case EM28XX_AMUX_MIC:
-               strcpy(a->name, "Mic");
+               strscpy(a->name, "Mic", sizeof(a->name));
                break;
        case EM28XX_AMUX_CD:
-               strcpy(a->name, "CD");
+               strscpy(a->name, "CD", sizeof(a->name));
                break;
        case EM28XX_AMUX_AUX:
-               strcpy(a->name, "Aux");
+               strscpy(a->name, "Aux", sizeof(a->name));
                break;
        case EM28XX_AMUX_PCM_OUT:
-               strcpy(a->name, "PCM");
+               strscpy(a->name, "PCM", sizeof(a->name));
                break;
        default:
                return -EINVAL;
        if (t->index != 0)
                return -EINVAL;
 
-       strcpy(t->name, "Tuner");
+       strscpy(t->name, "Tuner", sizeof(t->name));
 
        v4l2_device_call_all(&dev->v4l2->v4l2_dev, 0, tuner, g_tuner, t);
        return 0;
        if (unlikely(t->index > 0))
                return -EINVAL;
 
-       strcpy(t->name, "Radio");
+       strscpy(t->name, "Radio", sizeof(t->name));
 
        v4l2_device_call_all(&dev->v4l2->v4l2_dev, 0, tuner, g_tuner, t);
 
 
 {
        struct hdpvr_device *dev = video_drvdata(file);
 
-       strcpy(cap->driver, "hdpvr");
-       strcpy(cap->card, "Hauppauge HD PVR");
+       strscpy(cap->driver, "hdpvr", sizeof(cap->driver));
+       strscpy(cap->card, "Hauppauge HD PVR", sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO |
                            V4L2_CAP_READWRITE;
 
        /* setup and register video device */
        dev->video_dev = hdpvr_video_template;
-       strcpy(dev->video_dev.name, "Hauppauge HD PVR");
+       strscpy(dev->video_dev.name, "Hauppauge HD PVR",
+               sizeof(dev->video_dev.name));
        dev->video_dev.v4l2_dev = &dev->v4l2_dev;
        video_set_drvdata(&dev->video_dev, dev);
 
 
                        memset(osd_str + osd_len, ' ', 4 - osd_len);
                        osd_len = 4;
                        osd_str[osd_len] = '\0';
-                       strcpy(adap->log_addrs.osd_name, osd_str);
+                       strscpy(adap->log_addrs.osd_name, osd_str,
+                               sizeof(adap->log_addrs.osd_name));
                }
                err = pulse8_send_and_wait(pulse8, cmd, 1 + osd_len,
                                           MSGCODE_COMMAND_ACCEPTED, 0);
 
 
        /* Init video_device structure */
        pdev->vdev = pwc_template;
-       strcpy(pdev->vdev.name, name);
+       strscpy(pdev->vdev.name, name, sizeof(pdev->vdev.name));
        pdev->vdev.queue = &pdev->vb_queue;
        pdev->vdev.queue->lock = &pdev->vb_queue_lock;
        video_set_drvdata(&pdev->vdev, pdev);
 
 {
        struct pwc_device *pdev = video_drvdata(file);
 
-       strcpy(cap->driver, PWC_NAME);
+       strscpy(cap->driver, PWC_NAME, sizeof(cap->driver));
        strscpy(cap->card, pdev->vdev.name, sizeof(cap->card));
        usb_make_path(pdev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
 
                            !memcmp(rain->cmd, "STA", 3)) {
                                rain_process_msg(rain);
                        } else {
-                               strcpy(rain->cmd_reply, rain->cmd);
+                               strscpy(rain->cmd_reply, rain->cmd,
+                                       sizeof(rain->cmd_reply));
                                complete(&rain->cmd_done);
                        }
                        rain->cmd_idx = 0;
 
 
        dev->i2c_adap = adap_template;
        dev->i2c_adap.dev.parent = dev->dev;
-       strcpy(dev->i2c_adap.name, "stk1160");
+       strscpy(dev->i2c_adap.name, "stk1160", sizeof(dev->i2c_adap.name));
        dev->i2c_adap.algo_data = dev;
 
        i2c_set_adapdata(&dev->i2c_adap, &dev->v4l2_dev);
 
 {
        struct stk1160 *dev = video_drvdata(file);
 
-       strcpy(cap->driver, "stk1160");
-       strcpy(cap->card, "stk1160");
+       strscpy(cap->driver, "stk1160", sizeof(cap->driver));
+       strscpy(cap->card, "stk1160", sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps =
                V4L2_CAP_VIDEO_CAPTURE |
 
 {
        struct stk_camera *dev = video_drvdata(filp);
 
-       strcpy(cap->driver, "stk");
-       strcpy(cap->card, "stk");
+       strscpy(cap->driver, "stk", sizeof(cap->driver));
+       strscpy(cap->card, "stk", sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
 
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE
        if (input->index != 0)
                return -EINVAL;
 
-       strcpy(input->name, "Syntek USB Camera");
+       strscpy(input->name, "Syntek USB Camera", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
        return 0;
 }
        switch (fmtd->index) {
        case 0:
                fmtd->pixelformat = V4L2_PIX_FMT_RGB565;
-               strcpy(fmtd->description, "r5g6b5");
+               strscpy(fmtd->description, "r5g6b5", sizeof(fmtd->description));
                break;
        case 1:
                fmtd->pixelformat = V4L2_PIX_FMT_RGB565X;
-               strcpy(fmtd->description, "r5g6b5BE");
+               strscpy(fmtd->description, "r5g6b5BE", sizeof(fmtd->description));
                break;
        case 2:
                fmtd->pixelformat = V4L2_PIX_FMT_UYVY;
-               strcpy(fmtd->description, "yuv4:2:2");
+               strscpy(fmtd->description, "yuv4:2:2", sizeof(fmtd->description));
                break;
        case 3:
                fmtd->pixelformat = V4L2_PIX_FMT_SBGGR8;
-               strcpy(fmtd->description, "Raw bayer");
+               strscpy(fmtd->description, "Raw bayer", sizeof(fmtd->description));
                break;
        case 4:
                fmtd->pixelformat = V4L2_PIX_FMT_YUYV;
-               strcpy(fmtd->description, "yuv4:2:2");
+               strscpy(fmtd->description, "yuv4:2:2", sizeof(fmtd->description));
                break;
        default:
                return -EINVAL;
 
                snd_printk(KERN_ERR "cannot create card instance %d\n", devnr);
                return rc;
        }
-       strcpy(card->driver, "tm6000-alsa");
-       strcpy(card->shortname, "TM5600/60x0");
+       strscpy(card->driver, "tm6000-alsa", sizeof(card->driver));
+       strscpy(card->shortname, "TM5600/60x0", sizeof(card->shortname));
        sprintf(card->longname, "TM5600/60x0 Audio at bus %d device %d",
                dev->udev->bus->busnum, dev->udev->devnum);
 
 
        pcm->info_flags = 0;
        pcm->private_data = chip;
-       strcpy(pcm->name, "Trident TM5600/60x0");
+       strscpy(pcm->name, "Trident TM5600/60x0", sizeof(pcm->name));
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_tm6000_pcm_ops);
 
 
        else
                i->type = V4L2_INPUT_TYPE_CAMERA;
 
-       strcpy(i->name, iname[dev->vinput[n].type]);
+       strscpy(i->name, iname[dev->vinput[n].type], sizeof(i->name));
 
        i->std = TM6000_STD;
 
        if (0 != t->index)
                return -EINVAL;
 
-       strcpy(t->name, "Television");
+       strscpy(t->name, "Television", sizeof(t->name));
        t->type       = V4L2_TUNER_ANALOG_TV;
        t->capability = V4L2_TUNER_CAP_NORM | V4L2_TUNER_CAP_STEREO;
        t->rangehigh  = 0xffffffffUL;
                return -EINVAL;
 
        memset(t, 0, sizeof(*t));
-       strcpy(t->name, "Radio");
+       strscpy(t->name, "Radio", sizeof(t->name));
        t->type = V4L2_TUNER_RADIO;
        t->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO;
        t->rxsubchans = V4L2_TUNER_SUB_STEREO;
 
 
        /* i2c */
        memset(&ttusb->i2c_adap, 0, sizeof(struct i2c_adapter));
-       strcpy(ttusb->i2c_adap.name, "TTUSB DEC");
+       strscpy(ttusb->i2c_adap.name, "TTUSB DEC", sizeof(ttusb->i2c_adap.name));
 
        i2c_set_adapdata(&ttusb->i2c_adap, ttusb);
 
 
        switch (chan) {
        case 0:
                if (usbvision_device_data[usbvision->dev_model].video_channels == 4) {
-                       strcpy(vi->name, "White Video Input");
+                       strscpy(vi->name, "White Video Input", sizeof(vi->name));
                } else {
-                       strcpy(vi->name, "Television");
+                       strscpy(vi->name, "Television", sizeof(vi->name));
                        vi->type = V4L2_INPUT_TYPE_TUNER;
                        vi->tuner = chan;
                        vi->std = USBVISION_NORMS;
        case 1:
                vi->type = V4L2_INPUT_TYPE_CAMERA;
                if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
-                       strcpy(vi->name, "Green Video Input");
+                       strscpy(vi->name, "Green Video Input", sizeof(vi->name));
                else
-                       strcpy(vi->name, "Composite Video Input");
+                       strscpy(vi->name, "Composite Video Input",
+                               sizeof(vi->name));
                vi->std = USBVISION_NORMS;
                break;
        case 2:
                vi->type = V4L2_INPUT_TYPE_CAMERA;
                if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
-                       strcpy(vi->name, "Yellow Video Input");
+                       strscpy(vi->name, "Yellow Video Input", sizeof(vi->name));
                else
-                       strcpy(vi->name, "S-Video Input");
+                       strscpy(vi->name, "S-Video Input", sizeof(vi->name));
                vi->std = USBVISION_NORMS;
                break;
        case 3:
                vi->type = V4L2_INPUT_TYPE_CAMERA;
-               strcpy(vi->name, "Red Video Input");
+               strscpy(vi->name, "Red Video Input", sizeof(vi->name));
                vi->std = USBVISION_NORMS;
                break;
        }
        if (vt->index)  /* Only tuner 0 */
                return -EINVAL;
        if (vt->type == V4L2_TUNER_RADIO)
-               strcpy(vt->name, "Radio");
+               strscpy(vt->name, "Radio", sizeof(vt->name));
        else
-               strcpy(vt->name, "Television");
+               strscpy(vt->name, "Television", sizeof(vt->name));
 
        /* Let clients fill in the remainder of this struct */
        call_all(usbvision, tuner, g_tuner, vt);
 {
        if (vfd->index >= USBVISION_SUPPORTED_PALETTES - 1)
                return -EINVAL;
-       strcpy(vfd->description, usbvision_v4l2_format[vfd->index].desc);
+       strscpy(vfd->description, usbvision_v4l2_format[vfd->index].desc,
+               sizeof(vfd->description));
        vfd->pixelformat = usbvision_v4l2_format[vfd->index].format;
        return 0;
 }
 
        if (udev->serial)
                strscpy(dev->mdev.serial, udev->serial,
                        sizeof(dev->mdev.serial));
-       strcpy(dev->mdev.bus_info, udev->devpath);
+       strscpy(dev->mdev.bus_info, udev->devpath, sizeof(dev->mdev.bus_info));
        dev->mdev.hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
        media_device_init(&dev->mdev);
 
 
 {
        if (i->index != 0)
                return -EINVAL;
-       strcpy(i->name, DRIVER_DESC " Camera");
+       strscpy(i->name, DRIVER_DESC " Camera", sizeof(i->name));
        i->type = V4L2_INPUT_TYPE_CAMERA;
        return 0;
 }
        if (f->index > 0)
                return -EINVAL;
        f->flags = V4L2_FMT_FLAG_COMPRESSED;
-       strcpy(f->description, formats[0].name);
+       strscpy(f->description, formats[0].name, sizeof(f->description));
        f->pixelformat = formats[0].fourcc;
        return 0;
 }
 
                goto probe_disable_clock;
 
        vpfe_dev->media_dev.dev = vpfe_dev->pdev;
-       strcpy((char *)&vpfe_dev->media_dev.model, "davinci-media");
+       strscpy((char *)&vpfe_dev->media_dev.model, "davinci-media",
+               sizeof(vpfe_dev->media_dev.model));
 
        ret = media_device_register(&vpfe_dev->media_dev);
        if (ret) {
 
        csi2->sd.dev = &pdev->dev;
        csi2->sd.owner = THIS_MODULE;
        csi2->sd.flags = V4L2_SUBDEV_FL_HAS_DEVNODE;
-       strcpy(csi2->sd.name, DEVICE_NAME);
+       strscpy(csi2->sd.name, DEVICE_NAME, sizeof(csi2->sd.name));
        csi2->sd.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE;
        csi2->sd.grp_id = IMX_MEDIA_GRP_ID_CSI2;
 
 
        *zr->video_dev = zoran_template;
        zr->video_dev->v4l2_dev = &zr->v4l2_dev;
        zr->video_dev->lock = &zr->lock;
-       strcpy(zr->video_dev->name, ZR_DEVNAME(zr));
+       strscpy(zr->video_dev->name, ZR_DEVNAME(zr), sizeof(zr->video_dev->name));
        /* It's not a mem2mem device, but you can both capture and output from
           one and the same device. This should really be split up into two
           device nodes, but that's a job for another day. */