The implementation of strscpy() is more robust and safer.
That's now the recommended way to copy NUL terminated strings.
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
 {
        struct cec_caps caps = {};
 
-       strlcpy(caps.driver, adap->devnode.dev.parent->driver->name,
+       strscpy(caps.driver, adap->devnode.dev.parent->driver->name,
                sizeof(caps.driver));
-       strlcpy(caps.name, adap->name, sizeof(caps.name));
+       strscpy(caps.name, adap->name, sizeof(caps.name));
        caps.available_log_addrs = adap->available_log_addrs;
        caps.capabilities = adap->capabilities;
        caps.version = LINUX_VERSION_CODE;
 
        adap = kzalloc(sizeof(*adap), GFP_KERNEL);
        if (!adap)
                return ERR_PTR(-ENOMEM);
-       strlcpy(adap->name, name, sizeof(adap->name));
+       strscpy(adap->name, name, sizeof(adap->name));
        adap->phys_addr = CEC_PHYS_ADDR_INVALID;
        adap->cec_pin_is_high = true;
        adap->log_addrs.cec_version = CEC_OP_CEC_VERSION_2_0;
 
        fc->fc_i2c_adap[1].port = FC_I2C_PORT_EEPROM;
        fc->fc_i2c_adap[2].port = FC_I2C_PORT_TUNER;
 
-       strlcpy(fc->fc_i2c_adap[0].i2c_adap.name, "B2C2 FlexCop I2C to demod",
-                       sizeof(fc->fc_i2c_adap[0].i2c_adap.name));
-       strlcpy(fc->fc_i2c_adap[1].i2c_adap.name, "B2C2 FlexCop I2C to eeprom",
-                       sizeof(fc->fc_i2c_adap[1].i2c_adap.name));
-       strlcpy(fc->fc_i2c_adap[2].i2c_adap.name, "B2C2 FlexCop I2C to tuner",
-                       sizeof(fc->fc_i2c_adap[2].i2c_adap.name));
+       strscpy(fc->fc_i2c_adap[0].i2c_adap.name, "B2C2 FlexCop I2C to demod",
+               sizeof(fc->fc_i2c_adap[0].i2c_adap.name));
+       strscpy(fc->fc_i2c_adap[1].i2c_adap.name, "B2C2 FlexCop I2C to eeprom",
+               sizeof(fc->fc_i2c_adap[1].i2c_adap.name));
+       strscpy(fc->fc_i2c_adap[2].i2c_adap.name, "B2C2 FlexCop I2C to tuner",
+               sizeof(fc->fc_i2c_adap[2].i2c_adap.name));
 
        i2c_set_adapdata(&fc->fc_i2c_adap[0].i2c_adap, &fc->fc_i2c_adap[0]);
        i2c_set_adapdata(&fc->fc_i2c_adap[1].i2c_adap, &fc->fc_i2c_adap[1]);
 
                qctrl->step = step;
                qctrl->default_value = def;
                qctrl->reserved[0] = qctrl->reserved[1] = 0;
-               strlcpy(qctrl->name, name, sizeof(qctrl->name));
+               strscpy(qctrl->name, name, sizeof(qctrl->name));
                return 0;
 
        default:
 
        vfd->tvnorms = 0;
        for (i = 0; i < dev->ext_vv_data->num_stds; i++)
                vfd->tvnorms |= dev->ext_vv_data->stds[i].id;
-       strlcpy(vfd->name, name, sizeof(vfd->name));
+       strscpy(vfd->name, name, sizeof(vfd->name));
        video_set_drvdata(vfd, dev);
 
        err = video_register_device(vfd, type, -1);
 
        struct saa7146_dev *dev = ((struct saa7146_fh *)fh)->dev;
 
        strcpy((char *)cap->driver, "saa7146 v4l2");
-       strlcpy((char *)cap->card, dev->ext->name, sizeof(cap->card));
+       strscpy((char *)cap->card, dev->ext->name, sizeof(cap->card));
        sprintf((char *)cap->bus_info, "PCI:%s", pci_name(dev->pci));
        cap->device_caps =
                V4L2_CAP_VIDEO_CAPTURE |
 {
        if (f->index >= ARRAY_SIZE(formats))
                return -EINVAL;
-       strlcpy((char *)f->description, formats[f->index].name,
-                       sizeof(f->description));
+       strscpy((char *)f->description, formats[f->index].name,
+               sizeof(f->description));
        f->pixelformat = formats[f->index].pixelformat;
        return 0;
 }
 
        entry = kmalloc(sizeof(*entry), GFP_KERNEL);
        if (entry) {
                entry->mode = default_mode;
-               strlcpy(entry->devpath, devpath, sizeof(entry->devpath));
+               strscpy(entry->devpath, devpath, sizeof(entry->devpath));
                list_add(&entry->entry, &g_smscore_registry);
        } else
                pr_err("failed to create smscore_registry.\n");
        dev->postload_handler = params->postload_handler;
 
        dev->device_flags = params->flags;
-       strlcpy(dev->devpath, params->devpath, sizeof(dev->devpath));
+       strscpy(dev->devpath, params->devpath, sizeof(dev->devpath));
 
        smscore_registry_settype(dev->devpath, params->device_type);
 
 
        snprintf(coredev->ir.name, sizeof(coredev->ir.name),
                 "SMS IR (%s)", sms_get_board(board_id)->name);
 
-       strlcpy(coredev->ir.phys, coredev->devpath, sizeof(coredev->ir.phys));
+       strscpy(coredev->ir.phys, coredev->devpath, sizeof(coredev->ir.phys));
        strlcat(coredev->ir.phys, "/ir0", sizeof(coredev->ir.phys));
 
        dev->device_name = coredev->ir.name;
 
        spin_lock_init(&ctx->slock);
        INIT_LIST_HEAD(&ctx->dvb_q);
 
-       strlcpy(ctx->name, name, DVB_VB2_NAME_MAX);
+       strscpy(ctx->name, name, DVB_VB2_NAME_MAX);
        ctx->nonblocking = nonblocking;
        ctx->state = DVB_VB2_STATE_INIT;
 
 
                return NULL;
 
        if (name)
-               strlcpy(board_info->type, name, I2C_NAME_SIZE);
+               strscpy(board_info->type, name, I2C_NAME_SIZE);
        else
-               strlcpy(board_info->type, module_name, I2C_NAME_SIZE);
+               strscpy(board_info->type, module_name, I2C_NAME_SIZE);
 
        board_info->addr = addr;
        board_info->platform_data = platform_data;
 
        if (config->dont_use_pll)
                cx24123_repeater_mode(state, 1, 0);
 
-       strlcpy(state->tuner_i2c_adapter.name, "CX24123 tuner I2C bus",
+       strscpy(state->tuner_i2c_adapter.name, "CX24123 tuner I2C bus",
                sizeof(state->tuner_i2c_adapter.name));
        state->tuner_i2c_adapter.algo      = &cx24123_tuner_i2c_algo;
        state->tuner_i2c_adapter.algo_data = NULL;
 
        pdata.attach_in_use = true;
 
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "cxd2820r", I2C_NAME_SIZE);
+       strscpy(board_info.type, "cxd2820r", I2C_NAME_SIZE);
        board_info.addr = config->i2c_address;
        board_info.platform_data = &pdata;
        client = i2c_new_device(adapter, &board_info);
 
                                struct i2c_algorithm *algo, const char *name,
                                struct dibx000_i2c_master *mst)
 {
-       strlcpy(i2c_adap->name, name, sizeof(i2c_adap->name));
+       strscpy(i2c_adap->name, name, sizeof(i2c_adap->name));
        i2c_adap->algo = algo;
        i2c_adap->algo_data = NULL;
        i2c_set_adapdata(i2c_adap, mst);
 
        struct i2c_board_info board_info = {};
        struct lgdt330x_config config = *_config;
 
-       strlcpy(board_info.type, "lgdt330x", sizeof(board_info.type));
+       strscpy(board_info.type, "lgdt330x", sizeof(board_info.type));
        board_info.addr = demod_address;
        board_info.platform_data = &config;
        client = i2c_new_device(i2c, &board_info);
 
        pdata.attach_in_use = true;
 
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "m88ds3103", I2C_NAME_SIZE);
+       strscpy(board_info.type, "m88ds3103", I2C_NAME_SIZE);
        board_info.addr = cfg->i2c_addr;
        board_info.platform_data = &pdata;
        client = i2c_new_device(i2c, &board_info);
 
 
        dev_dbg(&pdev->dev, "\n");
 
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, dev->vdev.name, sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, dev->vdev.name, sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
                        V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
        dev_dbg(&pdev->dev, "index=%d type=%d\n", v->index, v->type);
 
        if (v->index == 0) {
-               strlcpy(v->name, "ADC: Realtek RTL2832", sizeof(v->name));
+               strscpy(v->name, "ADC: Realtek RTL2832", sizeof(v->name));
                v->type = V4L2_TUNER_ADC;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow =   300000;
                   V4L2_SUBDEV_HAS_OP(dev->v4l2_subdev, tuner, g_tuner)) {
                ret = v4l2_subdev_call(dev->v4l2_subdev, tuner, g_tuner, v);
        } else if (v->index == 1) {
-               strlcpy(v->name, "RF: <unknown>", sizeof(v->name));
+               strscpy(v->name, "RF: <unknown>", sizeof(v->name));
                v->type = V4L2_TUNER_RF;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow =    50000000;
        if (f->index >= dev->num_formats)
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name, sizeof(f->description));
+       strscpy(f->description, formats[f->index].name, sizeof(f->description));
        f->pixelformat = formats[f->index].pixelformat;
 
        return 0;
 
        state->frontend.demodulator_priv = state;
 
        /* create tuner i2c adapter */
-       strlcpy(state->tuner_i2c_adapter.name, "S5H1420-PN1010 tuner I2C bus",
+       strscpy(state->tuner_i2c_adapter.name, "S5H1420-PN1010 tuner I2C bus",
                sizeof(state->tuner_i2c_adapter.name));
        state->tuner_i2c_adapter.algo      = &s5h1420_tuner_i2c_algo;
        state->tuner_i2c_adapter.algo_data = NULL;
 
        adap->owner = THIS_MODULE;
        adap->algo = &tc90522_tuner_i2c_algo;
        adap->dev.parent = &client->dev;
-       strlcpy(adap->name, "tc90522_sub", sizeof(adap->name));
+       strscpy(adap->name, "tc90522_sub", sizeof(adap->name));
        i2c_set_adapdata(adap, state);
        ret = i2c_add_adapter(adap);
        if (ret < 0)
 
        pdata.attach_in_use = true;
 
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "ts2020", I2C_NAME_SIZE);
+       strscpy(board_info.type, "ts2020", I2C_NAME_SIZE);
        board_info.addr = config->tuner_address;
        board_info.platform_data = &pdata;
        client = i2c_new_device(i2c, &board_info);
 
                goto err_kfree;
 
        /* Create I2C adapter */
-       strlcpy(dev->adapter.name, "ZyDAS ZD1301 demod", sizeof(dev->adapter.name));
+       strscpy(dev->adapter.name, "ZyDAS ZD1301 demod",
+               sizeof(dev->adapter.name));
        dev->adapter.algo = &zd1301_demod_i2c_algorithm;
        dev->adapter.algo_data = NULL;
        dev->adapter.dev.parent = pdev->dev.parent;
 
                return -EIO;
 
        if (!id)
-               strlcpy(client->name, "cs53l32a", sizeof(client->name));
+               strscpy(client->name, "cs53l32a", sizeof(client->name));
 
        v4l_info(client, "chip found @ 0x%x (%s)\n",
                        client->addr << 1, client->adapter->name);
 
        imx274->client = client;
        sd = &imx274->sd;
        v4l2_i2c_subdev_init(sd, client, &imx274_subdev_ops);
-       strlcpy(sd->name, DRIVER_NAME, sizeof(sd->name));
+       strscpy(sd->name, DRIVER_NAME, sizeof(sd->name));
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
 
        /* initialize subdev media pad */
 
 
        sd = &info->sd;
        v4l2_i2c_subdev_init(sd, client, &m5mols_ops);
-       strlcpy(sd->name, MODULE_NAME, sizeof(sd->name));
+       strscpy(sd->name, MODULE_NAME, sizeof(sd->name));
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
        sd->internal_ops = &m5mols_subdev_internal_ops;
 
        if (vt->index > 0)
                return -EINVAL;
 
-       strlcpy(vt->name, "RF", sizeof(vt->name));
+       strscpy(vt->name, "RF", sizeof(vt->name));
        vt->type = V4L2_TUNER_RF;
        vt->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
        vt->rangelow = ctx->bands_rf->rangelow;
 
 #endif
 
        if (!id)
-               strlcpy(client->name, "msp3400", sizeof(client->name));
+               strscpy(client->name, "msp3400", sizeof(client->name));
 
        if (msp_reset(client) == -1) {
                dev_dbg_lvl(&client->dev, 1, msp_debug, "msp3400 not found\n");
 
        mutex_init(&info->lock);
        sd = &info->sd;
        v4l2_i2c_subdev_init(sd, client, &noon010_ops);
-       strlcpy(sd->name, MODULE_NAME, sizeof(sd->name));
+       strscpy(sd->name, MODULE_NAME, sizeof(sd->name));
 
        sd->internal_ops = &noon010_subdev_internal_ops;
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        sd = &ov965x->sd;
        v4l2_i2c_subdev_init(sd, client, &ov965x_subdev_ops);
-       strlcpy(sd->name, DRIVER_NAME, sizeof(sd->name));
+       strscpy(sd->name, DRIVER_NAME, sizeof(sd->name));
 
        sd->internal_ops = &ov965x_sd_internal_ops;
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
 
        v4l2_subdev_init(sd, &s5c73m3_subdev_ops);
        sd->owner = client->dev.driver->owner;
        v4l2_set_subdevdata(sd, state);
-       strlcpy(sd->name, "S5C73M3", sizeof(sd->name));
+       strscpy(sd->name, "S5C73M3", sizeof(sd->name));
 
        sd->internal_ops = &s5c73m3_internal_ops;
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
        sd = &priv->sd;
        /* Registering subdev */
        v4l2_i2c_subdev_init(sd, client, &s5k4ecgx_ops);
-       strlcpy(sd->name, S5K4ECGX_DRIVER_NAME, sizeof(sd->name));
+       strscpy(sd->name, S5K4ECGX_DRIVER_NAME, sizeof(sd->name));
 
        sd->internal_ops = &s5k4ecgx_subdev_internal_ops;
        /* Support v4l2 sub-device user space API */
 
 
        sd = &s5k6aa->sd;
        v4l2_i2c_subdev_init(sd, client, &s5k6aa_subdev_ops);
-       strlcpy(sd->name, DRIVER_NAME, sizeof(sd->name));
+       strscpy(sd->name, DRIVER_NAME, sizeof(sd->name));
 
        sd->internal_ops = &s5k6aa_subdev_internal_ops;
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
                 * the lower nibble is a gm7113c.
                 */
 
-               strlcpy(name, "gm7113c", CHIP_VER_SIZE);
+               strscpy(name, "gm7113c", CHIP_VER_SIZE);
 
                if (!autodetect && strcmp(name, id->name))
                        return -EINVAL;
 
        /* Check if it is a CJC7113 */
        if (!memcmp(name, "1111111111111111", CHIP_VER_SIZE)) {
-               strlcpy(name, "cjc7113", CHIP_VER_SIZE);
+               strscpy(name, "cjc7113", CHIP_VER_SIZE);
 
                if (!autodetect && strcmp(name, id->name))
                        return -EINVAL;
        if (ident < 0)
                return ident;
 
-       strlcpy(client->name, name, sizeof(client->name));
+       strscpy(client->name, name, sizeof(client->name));
 
        state = devm_kzalloc(&client->dev, sizeof(*state), GFP_KERNEL);
        if (state == NULL)
 
                        saa7127_write(sd, SAA7129_REG_FADE_KEY_COL2,
                                        read_result);
                        state->ident = SAA7129;
-                       strlcpy(client->name, "saa7129", I2C_NAME_SIZE);
+                       strscpy(client->name, "saa7129", I2C_NAME_SIZE);
                } else {
                        state->ident = SAA7127;
-                       strlcpy(client->name, "saa7127", I2C_NAME_SIZE);
+                       strscpy(client->name, "saa7127", I2C_NAME_SIZE);
                }
        }
 
 
 
        /* fill required data structures */
        if (!id)
-               strlcpy(client->name, desc->name, I2C_NAME_SIZE);
+               strscpy(client->name, desc->name, I2C_NAME_SIZE);
        chip->desc = desc;
        chip->shadow.count = desc->registers+1;
        chip->prevmode = -1;
 
        struct video_i2c_data *data = video_drvdata(file);
        struct i2c_client *client = data->client;
 
-       strlcpy(vcap->driver, data->v4l2_dev.name, sizeof(vcap->driver));
-       strlcpy(vcap->card, data->vdev.name, sizeof(vcap->card));
+       strscpy(vcap->driver, data->v4l2_dev.name, sizeof(vcap->driver));
+       strscpy(vcap->card, data->vdev.name, sizeof(vcap->card));
 
        sprintf(vcap->bus_info, "I2C:%d-%d", client->adapter->nr, client->addr);
 
        if (vin->index > 0)
                return -EINVAL;
 
-       strlcpy(vin->name, "Camera", sizeof(vin->name));
+       strscpy(vin->name, "Camera", sizeof(vin->name));
 
        vin->type = V4L2_INPUT_TYPE_CAMERA;
 
 
        data->client = client;
        v4l2_dev = &data->v4l2_dev;
-       strlcpy(v4l2_dev->name, VIDEO_I2C_DRIVER, sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, VIDEO_I2C_DRIVER, sizeof(v4l2_dev->name));
 
        ret = v4l2_device_register(&client->dev, v4l2_dev);
        if (ret < 0)
 
        memset(info, 0, sizeof(*info));
 
        if (dev->driver_name[0])
-               strlcpy(info->driver, dev->driver_name, sizeof(info->driver));
+               strscpy(info->driver, dev->driver_name, sizeof(info->driver));
        else
-               strlcpy(info->driver, dev->dev->driver->name,
+               strscpy(info->driver, dev->dev->driver->name,
                        sizeof(info->driver));
 
-       strlcpy(info->model, dev->model, sizeof(info->model));
-       strlcpy(info->serial, dev->serial, sizeof(info->serial));
-       strlcpy(info->bus_info, dev->bus_info, sizeof(info->bus_info));
+       strscpy(info->model, dev->model, sizeof(info->model));
+       strscpy(info->serial, dev->serial, sizeof(info->serial));
+       strscpy(info->bus_info, dev->bus_info, sizeof(info->bus_info));
 
        info->media_version = LINUX_VERSION_CODE;
        info->driver_version = info->media_version;
 
        entd->id = media_entity_id(ent);
        if (ent->name)
-               strlcpy(entd->name, ent->name, sizeof(entd->name));
+               strscpy(entd->name, ent->name, sizeof(entd->name));
        entd->type = ent->function;
        entd->revision = 0;             /* Unused */
        entd->flags = ent->flags;
                kentity.id = entity->graph_obj.id;
                kentity.function = entity->function;
                kentity.flags = entity->flags;
-               strlcpy(kentity.name, entity->name,
+               strscpy(kentity.name, entity->name,
                        sizeof(kentity.name));
 
                if (copy_to_user(uentity, &kentity, sizeof(kentity)))
        mdev->dev = &pci_dev->dev;
 
        if (name)
-               strlcpy(mdev->model, name, sizeof(mdev->model));
+               strscpy(mdev->model, name, sizeof(mdev->model));
        else
-               strlcpy(mdev->model, pci_name(pci_dev), sizeof(mdev->model));
+               strscpy(mdev->model, pci_name(pci_dev), sizeof(mdev->model));
 
        sprintf(mdev->bus_info, "PCI:%s", pci_name(pci_dev));
 
        mdev->dev = &udev->dev;
 
        if (driver_name)
-               strlcpy(mdev->driver_name, driver_name,
+               strscpy(mdev->driver_name, driver_name,
                        sizeof(mdev->driver_name));
 
        if (board_name)
-               strlcpy(mdev->model, board_name, sizeof(mdev->model));
+               strscpy(mdev->model, board_name, sizeof(mdev->model));
        else if (udev->product)
-               strlcpy(mdev->model, udev->product, sizeof(mdev->model));
+               strscpy(mdev->model, udev->product, sizeof(mdev->model));
        else
-               strlcpy(mdev->model, "unknown model", sizeof(mdev->model));
+               strscpy(mdev->model, "unknown model", sizeof(mdev->model));
        if (udev->serial)
-               strlcpy(mdev->serial, udev->serial, sizeof(mdev->serial));
+               strscpy(mdev->serial, udev->serial, sizeof(mdev->serial));
        usb_make_path(udev, mdev->bus_info, sizeof(mdev->bus_info));
        mdev->hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
 
 
        if (0 == v4l2)
                return -EINVAL;
 
-       strlcpy(cap->driver, "bttv", sizeof(cap->driver));
-       strlcpy(cap->card, btv->video_dev.name, sizeof(cap->card));
+       strscpy(cap->driver, "bttv", sizeof(cap->driver));
+       strscpy(cap->card, btv->video_dev.name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "PCI:%s", pci_name(btv->c.pci));
        cap->capabilities =
                return -EINVAL;
 
        f->pixelformat = formats[i].fourcc;
-       strlcpy(f->description, formats[i].name, sizeof(f->description));
+       strscpy(f->description, formats[i].name, sizeof(f->description));
 
        return i;
 }
 
 /* init + register i2c adapter */
 int init_bttv_i2c(struct bttv *btv)
 {
-       strlcpy(btv->i2c_client.name, "bttv internal", I2C_NAME_SIZE);
+       strscpy(btv->i2c_client.name, "bttv internal", I2C_NAME_SIZE);
 
        if (i2c_hw)
                btv->use_i2c_hw = 1;
        if (btv->use_i2c_hw) {
                /* bt878 */
-               strlcpy(btv->c.i2c_adap.name, "bt878",
+               strscpy(btv->c.i2c_adap.name, "bt878",
                        sizeof(btv->c.i2c_adap.name));
                btv->c.i2c_adap.algo = &bttv_algo;
        } else {
                if (i2c_udelay<5)
                        i2c_udelay=5;
 
-               strlcpy(btv->c.i2c_adap.name, "bttv",
+               strscpy(btv->c.i2c_adap.name, "bttv",
                        sizeof(btv->c.i2c_adap.name));
                btv->i2c_algo = bttv_i2c_algo_bit_template;
                btv->i2c_algo.udelay = i2c_udelay;
 
 
        memset(&info, 0, sizeof(struct i2c_board_info));
        memset(&btv->init_data, 0, sizeof(btv->init_data));
-       strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+       strscpy(info.type, "ir_video", I2C_NAME_SIZE);
 
        switch (btv->c.type) {
        case BTTV_BOARD_PV951:
 
 
        mutex_init(&card->lock);
        card->bttv_nr = sub->core->nr;
-       strlcpy(card->card_name, sub->core->v4l2_dev.name, sizeof(card->card_name));
+       strscpy(card->card_name, sub->core->v4l2_dev.name,
+               sizeof(card->card_name));
        card->i2c_adapter = &sub->core->i2c_adap;
 
        switch(sub->core->type) {
 
        struct snd_card *sc = cobsc->sc;
 
        /* sc->driver is used by alsa-lib's configurator: simple, unique */
-       strlcpy(sc->driver, "cobalt", sizeof(sc->driver));
+       strscpy(sc->driver, "cobalt", sizeof(sc->driver));
 
        /* sc->shortname is a symlink in /proc/asound: COBALT-M -> cardN */
        snprintf(sc->shortname,  sizeof(sc->shortname), "cobalt-%d-%d",
 
                                &snd_cobalt_pcm_capture_ops);
                sp->info_flags = 0;
                sp->private_data = cobsc;
-               strlcpy(sp->name, "cobalt", sizeof(sp->name));
+               strscpy(sp->name, "cobalt", sizeof(sp->name));
        } else {
                cobalt_s_bit_sysctrl(cobalt,
                        COBALT_SYS_CTRL_AUDIO_OPP_RESETN_BIT, 0);
                                &snd_cobalt_pcm_playback_ops);
                sp->info_flags = 0;
                sp->private_data = cobsc;
-               strlcpy(sp->name, "cobalt", sizeof(sp->name));
+               strscpy(sp->name, "cobalt", sizeof(sp->name));
        }
 
        return 0;
 
        struct cobalt_stream *s = video_drvdata(file);
        struct cobalt *cobalt = s->cobalt;
 
-       strlcpy(vcap->driver, "cobalt", sizeof(vcap->driver));
-       strlcpy(vcap->card, "cobalt", sizeof(vcap->card));
+       strscpy(vcap->driver, "cobalt", sizeof(vcap->driver));
+       strscpy(vcap->card, "cobalt", sizeof(vcap->card));
        snprintf(vcap->bus_info, sizeof(vcap->bus_info),
                 "PCIe:%s", pci_name(cobalt->pci_dev));
        vcap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
 {
        switch (f->index) {
        case 0:
-               strlcpy(f->description, "YUV 4:2:2", sizeof(f->description));
+               strscpy(f->description, "YUV 4:2:2", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_YUYV;
                break;
        case 1:
-               strlcpy(f->description, "RGB24", sizeof(f->description));
+               strscpy(f->description, "RGB24", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_RGB24;
                break;
        case 2:
-               strlcpy(f->description, "RGB32", sizeof(f->description));
+               strscpy(f->description, "RGB32", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_BGR32;
                break;
        default:
 {
        switch (f->index) {
        case 0:
-               strlcpy(f->description, "YUV 4:2:2", sizeof(f->description));
+               strscpy(f->description, "YUV 4:2:2", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_YUYV;
                break;
        case 1:
-               strlcpy(f->description, "RGB32", sizeof(f->description));
+               strscpy(f->description, "RGB32", sizeof(f->description));
                f->pixelformat = V4L2_PIX_FMT_BGR32;
                break;
        default:
 
        struct snd_card *sc = cxsc->sc;
 
        /* sc->driver is used by alsa-lib's configurator: simple, unique */
-       strlcpy(sc->driver, "CX23418", sizeof(sc->driver));
+       strscpy(sc->driver, "CX23418", sizeof(sc->driver));
 
        /* sc->shortname is a symlink in /proc/asound: CX18-M -> cardN */
        snprintf(sc->shortname,  sizeof(sc->shortname), "CX18-%d",
 
                        &snd_cx18_pcm_capture_ops);
        sp->info_flags = 0;
        sp->private_data = cxsc;
-       strlcpy(sp->name, cx->card_name, sizeof(sp->name));
+       strscpy(sp->name, cx->card_name, sizeof(sp->name));
 
        return 0;
 
 
        if (index >= cx->nof_inputs)
                return -EINVAL;
        input->index = index;
-       strlcpy(input->name, input_strs[card_input->video_type - 1],
-                       sizeof(input->name));
+       strscpy(input->name, input_strs[card_input->video_type - 1],
+               sizeof(input->name));
        input->type = (card_input->video_type == CX18_CARD_INPUT_VID_TUNER ?
                        V4L2_INPUT_TYPE_TUNER : V4L2_INPUT_TYPE_CAMERA);
        input->audioset = (1 << cx->nof_audio_inputs) - 1;
        memset(audio, 0, sizeof(*audio));
        if (index >= cx->nof_audio_inputs)
                return -EINVAL;
-       strlcpy(audio->name, input_strs[aud_input->audio_type - 1],
-                       sizeof(audio->name));
+       strscpy(audio->name, input_strs[aud_input->audio_type - 1],
+               sizeof(audio->name));
        audio->index = index;
        audio->capability = V4L2_AUDCAP_STEREO;
        return 0;
 
        if (!c)
                return;
 
-       strlcpy(c->name, "cx18 tveeprom tmp", sizeof(c->name));
+       strscpy(c->name, "cx18 tveeprom tmp", sizeof(c->name));
        c->adapter = &cx->i2c_adap[0];
        c->addr = 0xa0 >> 1;
 
 
        unsigned short addr_list[2] = { addr, I2C_CLIENT_END };
 
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, type, I2C_NAME_SIZE);
+       strscpy(info.type, type, I2C_NAME_SIZE);
 
        /* Our default information for ir-kbd-i2c.c to use */
        switch (hw) {
 
        struct cx18_stream *s = video_drvdata(file);
        struct cx18 *cx = id->cx;
 
-       strlcpy(vcap->driver, CX18_DRIVER_NAME, sizeof(vcap->driver));
-       strlcpy(vcap->card, cx->card_name, sizeof(vcap->card));
+       strscpy(vcap->driver, CX18_DRIVER_NAME, sizeof(vcap->driver));
+       strscpy(vcap->card, cx->card_name, sizeof(vcap->card));
        snprintf(vcap->bus_info, sizeof(vcap->bus_info),
                 "PCI:%s", pci_name(cx->pci_dev));
        vcap->capabilities = cx->v4l2_cap;      /* capabilities */
        cx18_call_all(cx, tuner, g_tuner, vt);
 
        if (vt->type == V4L2_TUNER_RADIO)
-               strlcpy(vt->name, "cx18 Radio Tuner", sizeof(vt->name));
+               strscpy(vt->name, "cx18 Radio Tuner", sizeof(vt->name));
        else
-               strlcpy(vt->name, "cx18 TV Tuner", sizeof(vt->name));
+               strscpy(vt->name, "cx18 TV Tuner", sizeof(vt->name));
        return 0;
 }
 
 
        struct cx23885_dev *dev = video_drvdata(file);
        struct cx23885_tsport  *tsport = &dev->ts1;
 
-       strlcpy(cap->driver, dev->name, sizeof(cap->driver));
-       strlcpy(cap->card, cx23885_boards[tsport->dev->board].name,
+       strscpy(cap->driver, dev->name, sizeof(cap->driver));
+       strscpy(cap->card, cx23885_boards[tsport->dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
        if (f->index != 0)
                return -EINVAL;
 
-       strlcpy(f->description, "MPEG", sizeof(f->description));
+       strscpy(f->description, "MPEG", sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_MPEG;
 
        return 0;
 
                sp2_config.priv = port;
                sp2_config.ci_control = cx23885_sp2_ci_ctrl;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "sp2", I2C_NAME_SIZE);
+               strscpy(info.type, "sp2", I2C_NAME_SIZE);
                info.addr = 0x40;
                info.platform_data = &sp2_config;
                request_module(info.type);
                case 1:
                        /* attach demod + tuner combo */
                        memset(&info, 0, sizeof(info));
-                       strlcpy(info.type, "tda10071_cx24118", I2C_NAME_SIZE);
+                       strscpy(info.type, "tda10071_cx24118", I2C_NAME_SIZE);
                        info.addr = 0x05;
                        info.platform_data = &tda10071_pdata;
                        request_module("tda10071");
                        /* attach SEC */
                        a8293_pdata.dvb_frontend = fe0->dvb.frontend;
                        memset(&info, 0, sizeof(info));
-                       strlcpy(info.type, "a8293", I2C_NAME_SIZE);
+                       strscpy(info.type, "a8293", I2C_NAME_SIZE);
                        info.addr = 0x0b;
                        info.platform_data = &a8293_pdata;
                        request_module("a8293");
                        si2165_pdata.chip_mode = SI2165_MODE_PLL_XTAL;
                        si2165_pdata.ref_freq_hz = 16000000;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2165", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2165", I2C_NAME_SIZE);
                        info.addr = 0x64;
                        info.platform_data = &si2165_pdata;
                        request_module(info.type);
 
                /* attach demod + tuner combo */
                memset(&info, 0, sizeof(info));
-               strlcpy(info.type, "tda10071_cx24118", I2C_NAME_SIZE);
+               strscpy(info.type, "tda10071_cx24118", I2C_NAME_SIZE);
                info.addr = 0x05;
                info.platform_data = &tda10071_pdata;
                request_module("tda10071");
                /* attach SEC */
                a8293_pdata.dvb_frontend = fe0->dvb.frontend;
                memset(&info, 0, sizeof(info));
-               strlcpy(info.type, "a8293", I2C_NAME_SIZE);
+               strscpy(info.type, "a8293", I2C_NAME_SIZE);
                info.addr = 0x0b;
                info.platform_data = &a8293_pdata;
                request_module("a8293");
                        ts2020_config.fe = fe0->dvb.frontend;
                        ts2020_config.get_agc_pwm = m88ds3103_get_agc_pwm;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "ts2020", I2C_NAME_SIZE);
+                       strscpy(info.type, "ts2020", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &ts2020_config;
                        request_module(info.type);
                        si2168_config.fe = &fe0->dvb.frontend;
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0x64;
                        info.platform_data = &si2168_config;
                        request_module(info.type);
                        si2157_config.fe = fe0->dvb.frontend;
                        si2157_config.if_port = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &si2157_config;
                        request_module(info.type);
                si2168_config.fe = &fe0->dvb.frontend;
                si2168_config.ts_mode = SI2168_TS_PARALLEL;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+               strscpy(info.type, "si2168", I2C_NAME_SIZE);
                info.addr = 0x64;
                info.platform_data = &si2168_config;
                request_module(info.type);
                si2157_config.fe = fe0->dvb.frontend;
                si2157_config.if_port = 1;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+               strscpy(info.type, "si2157", I2C_NAME_SIZE);
                info.addr = 0x60;
                info.platform_data = &si2157_config;
                request_module(info.type);
                ts2020_config.fe = fe0->dvb.frontend;
                ts2020_config.get_agc_pwm = m88ds3103_get_agc_pwm;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "ts2020", I2C_NAME_SIZE);
+               strscpy(info.type, "ts2020", I2C_NAME_SIZE);
                info.addr = 0x60;
                info.platform_data = &ts2020_config;
                request_module(info.type);
                }
 
                memset(&info, 0, sizeof(info));
-               strlcpy(info.type, "m88ds3103", I2C_NAME_SIZE);
+               strscpy(info.type, "m88ds3103", I2C_NAME_SIZE);
                info.addr = 0x68;
                info.platform_data = &m88ds3103_pdata;
                request_module(info.type);
                ts2020_config.fe = fe0->dvb.frontend;
                ts2020_config.get_agc_pwm = m88ds3103_get_agc_pwm;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "ts2020", I2C_NAME_SIZE);
+               strscpy(info.type, "ts2020", I2C_NAME_SIZE);
                info.addr = 0x60;
                info.platform_data = &ts2020_config;
                request_module(info.type);
                si2168_config.i2c_adapter = &adapter;
                si2168_config.fe = &fe0->dvb.frontend;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+               strscpy(info.type, "si2168", I2C_NAME_SIZE);
                info.addr = 0x64;
                info.platform_data = &si2168_config;
                request_module(info.type);
                si2157_config.fe = fe0->dvb.frontend;
                si2157_config.if_port = 1;
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+               strscpy(info.type, "si2157", I2C_NAME_SIZE);
                info.addr = 0x60;
                info.platform_data = &si2157_config;
                request_module(info.type);
                        /* attach SEC */
                        a8293_pdata.dvb_frontend = fe0->dvb.frontend;
                        memset(&info, 0, sizeof(info));
-                       strlcpy(info.type, "a8293", I2C_NAME_SIZE);
+                       strscpy(info.type, "a8293", I2C_NAME_SIZE);
                        info.addr = 0x0b;
                        info.platform_data = &a8293_pdata;
                        request_module("a8293");
                        memset(&m88rs6000t_config, 0, sizeof(m88rs6000t_config));
                        m88rs6000t_config.fe = fe0->dvb.frontend;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "m88rs6000t", I2C_NAME_SIZE);
+                       strscpy(info.type, "m88rs6000t", I2C_NAME_SIZE);
                        info.addr = 0x21;
                        info.platform_data = &m88rs6000t_config;
                        request_module("%s", info.type);
                        si2168_config.fe = &fe0->dvb.frontend;
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0x64;
                        info.platform_data = &si2168_config;
                        request_module("%s", info.type);
                        si2157_config.fe = fe0->dvb.frontend;
                        si2157_config.if_port = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &si2157_config;
                        request_module("%s", info.type);
                        si2168_config.fe = &fe0->dvb.frontend;
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0x64;
                        info.platform_data = &si2168_config;
                        request_module("%s", info.type);
                        si2157_config.fe = fe0->dvb.frontend;
                        si2157_config.if_port = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &si2157_config;
                        request_module("%s", info.type);
                        si2168_config.fe = &fe0->dvb.frontend;
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0x66;
                        info.platform_data = &si2168_config;
                        request_module("%s", info.type);
                        si2157_config.fe = fe0->dvb.frontend;
                        si2157_config.if_port = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x62;
                        info.platform_data = &si2157_config;
                        request_module("%s", info.type);
                        si2157_config.if_port = 1;
                        si2157_config.inversion = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &si2157_config;
                        request_module("%s", info.type);
                        si2157_config.if_port = 1;
                        si2157_config.inversion = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x62;
                        info.platform_data = &si2157_config;
                        request_module("%s", info.type);
                        si2157_config.if_port = 1;
                        si2157_config.inversion = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &si2157_config;
                        request_module("%s", info.type);
 
        bus->i2c_client = cx23885_i2c_client_template;
        bus->i2c_adap.dev.parent = &dev->pci->dev;
 
-       strlcpy(bus->i2c_adap.name, bus->dev->name,
+       strscpy(bus->i2c_adap.name, bus->dev->name,
                sizeof(bus->i2c_adap.name));
 
        bus->i2c_adap.algo_data = bus;
                };
 
                memset(&info, 0, sizeof(struct i2c_board_info));
-               strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+               strscpy(info.type, "ir_video", I2C_NAME_SIZE);
                /* Use quick read command for probe, some IR chips don't
                 * support writes */
                i2c_new_probed_device(&bus->i2c_adap, &info, addr_list,
 
        if (chip->match.addr == 1) {
                if (dev->v4l_device == NULL)
                        return -EINVAL;
-               strlcpy(chip->name, "cx23417", sizeof(chip->name));
+               strscpy(chip->name, "cx23417", sizeof(chip->name));
        } else {
-               strlcpy(chip->name, dev->v4l2_dev.name, sizeof(chip->name));
+               strscpy(chip->name, dev->v4l2_dev.name, sizeof(chip->name));
        }
        return 0;
 }
 
        struct video_device *vdev = video_devdata(file);
 
        strcpy(cap->driver, "cx23885");
-       strlcpy(cap->card, cx23885_boards[dev->board].name,
+       strscpy(cap->card, cx23885_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci));
        cap->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING | V4L2_CAP_AUDIO;
        if (unlikely(f->index >= ARRAY_SIZE(formats)))
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name,
+       strscpy(f->description, formats[f->index].name,
                sizeof(f->description));
        f->pixelformat = formats[f->index].fourcc;
 
 
        bus->i2c_client = cx25821_i2c_client_template;
        bus->i2c_adap.dev.parent = &dev->pci->dev;
 
-       strlcpy(bus->i2c_adap.name, bus->dev->name, sizeof(bus->i2c_adap.name));
+       strscpy(bus->i2c_adap.name, bus->dev->name, sizeof(bus->i2c_adap.name));
 
        bus->i2c_adap.algo_data = bus;
        i2c_set_adapdata(&bus->i2c_adap, &dev->v4l2_dev);
 
        if (unlikely(f->index >= ARRAY_SIZE(formats)))
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name, sizeof(f->description));
+       strscpy(f->description, formats[f->index].name, sizeof(f->description));
        f->pixelformat = formats[f->index].fourcc;
 
        return 0;
        const u32 cap_output = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_READWRITE;
 
        strcpy(cap->driver, "cx25821");
-       strlcpy(cap->card, cx25821_boards[dev->board].name, sizeof(cap->card));
+       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)
                cap->device_caps = cap_output;
 
        if (f->index != 0)
                return -EINVAL;
 
-       strlcpy(f->description, "MPEG", sizeof(f->description));
+       strscpy(f->description, "MPEG", sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_MPEG;
        f->flags = V4L2_FMT_FLAG_COMPRESSED;
        return 0;
 
        core->i2c_algo = cx8800_i2c_algo_template;
 
        core->i2c_adap.dev.parent = &pci->dev;
-       strlcpy(core->i2c_adap.name, core->name, sizeof(core->i2c_adap.name));
+       strscpy(core->i2c_adap.name, core->name, sizeof(core->i2c_adap.name));
        core->i2c_adap.owner = THIS_MODULE;
        core->i2c_algo.udelay = i2c_udelay;
        core->i2c_algo.data = core;
        i2c_set_adapdata(&core->i2c_adap, &core->v4l2_dev);
        core->i2c_adap.algo_data = &core->i2c_algo;
        core->i2c_client.adapter = &core->i2c_adap;
-       strlcpy(core->i2c_client.name, "cx88xx internal", I2C_NAME_SIZE);
+       strscpy(core->i2c_client.name, "cx88xx internal", I2C_NAME_SIZE);
 
        cx8800_bit_setscl(core, 1);
        cx8800_bit_setsda(core, 1);
 
                return;
 
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+       strscpy(info.type, "ir_video", I2C_NAME_SIZE);
 
        switch (core->boardnr) {
        case CX88_BOARD_LEADTEK_PVR2000:
 
                if (*addrp == 0x71) {
                        /* Hauppauge Z8F0811 */
-                       strlcpy(info.type, "ir_z8f0811_haup", I2C_NAME_SIZE);
+                       strscpy(info.type, "ir_z8f0811_haup", I2C_NAME_SIZE);
                        core->init_data.name = core->board.name;
                        core->init_data.ir_codes = RC_MAP_HAUPPAUGE;
                        core->init_data.type = RC_PROTO_BIT_RC5 |
 
 {
        struct video_device *vdev = video_devdata(file);
 
-       strlcpy(cap->card, core->board.name, sizeof(cap->card));
+       strscpy(cap->card, core->board.name, sizeof(cap->card));
        cap->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
        if (core->board.tuner_type != UNSET)
                cap->device_caps |= V4L2_CAP_TUNER;
        if (unlikely(f->index >= ARRAY_SIZE(formats)))
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name, sizeof(f->description));
+       strscpy(f->description, formats[f->index].name, sizeof(f->description));
        f->pixelformat = formats[f->index].fourcc;
 
        return 0;
 
        vp3054_i2c->algo = vp3054_i2c_algo_template;
 
        vp3054_i2c->adap.dev.parent = &dev->pci->dev;
-       strlcpy(vp3054_i2c->adap.name, core->name,
+       strscpy(vp3054_i2c->adap.name, core->name,
                sizeof(vp3054_i2c->adap.name));
        vp3054_i2c->adap.owner = THIS_MODULE;
        vp3054_i2c->algo.data = dev;
 
                snprintf(input->name, sizeof(input->name), "VID%d",
                         input->index);
        else
-               strlcpy(input->name, "J2/VID0", sizeof(input->name));
+               strscpy(input->name, "J2/VID0", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
        input->std = V4L2_STD_ALL;
        input->status = 0;
 
 {
        struct cio2_device *cio2 = video_drvdata(file);
 
-       strlcpy(cap->driver, CIO2_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, CIO2_DEVICE_NAME, sizeof(cap->card));
+       strscpy(cap->driver, CIO2_NAME, sizeof(cap->driver));
+       strscpy(cap->card, CIO2_DEVICE_NAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "PCI:%s", pci_name(cio2->pci_dev));
 
        if (input->index > 0)
                return -EINVAL;
 
-       strlcpy(input->name, "camera", sizeof(input->name));
+       strscpy(input->name, "camera", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
 
        return 0;
        mutex_init(&cio2->lock);
 
        cio2->media_dev.dev = &cio2->pci_dev->dev;
-       strlcpy(cio2->media_dev.model, CIO2_DEVICE_NAME,
+       strscpy(cio2->media_dev.model, CIO2_DEVICE_NAME,
                sizeof(cio2->media_dev.model));
        snprintf(cio2->media_dev.bus_info, sizeof(cio2->media_dev.bus_info),
                 "PCI:%s", pci_name(cio2->pci_dev));
 
        struct snd_card *sc = itvsc->sc;
 
        /* sc->driver is used by alsa-lib's configurator: simple, unique */
-       strlcpy(sc->driver, "CX2341[56]", sizeof(sc->driver));
+       strscpy(sc->driver, "CX2341[56]", sizeof(sc->driver));
 
        /* sc->shortname is a symlink in /proc/asound: IVTV-M -> cardN */
        snprintf(sc->shortname,  sizeof(sc->shortname), "IVTV-%d",
 
                        &snd_ivtv_pcm_capture_ops);
        sp->info_flags = 0;
        sp->private_data = itvsc;
-       strlcpy(sp->name, itv->card_name, sizeof(sp->name));
+       strscpy(sp->name, itv->card_name, sizeof(sp->name));
 
        return 0;
 
 
        if (index >= itv->nof_inputs)
                return -EINVAL;
        input->index = index;
-       strlcpy(input->name, input_strs[card_input->video_type - 1],
-                       sizeof(input->name));
+       strscpy(input->name, input_strs[card_input->video_type - 1],
+               sizeof(input->name));
        input->type = (card_input->video_type == IVTV_CARD_INPUT_VID_TUNER ?
                        V4L2_INPUT_TYPE_TUNER : V4L2_INPUT_TYPE_CAMERA);
        input->audioset = (1 << itv->nof_audio_inputs) - 1;
        if (index >= itv->card->nof_outputs)
                return -EINVAL;
        output->index = index;
-       strlcpy(output->name, card_output->name, sizeof(output->name));
+       strscpy(output->name, card_output->name, sizeof(output->name));
        output->type = V4L2_OUTPUT_TYPE_ANALOG;
        output->audioset = 1;
        output->std = V4L2_STD_ALL;
        memset(audio, 0, sizeof(*audio));
        if (index >= itv->nof_audio_inputs)
                return -EINVAL;
-       strlcpy(audio->name, input_strs[aud_input->audio_type - 1],
-                       sizeof(audio->name));
+       strscpy(audio->name, input_strs[aud_input->audio_type - 1],
+               sizeof(audio->name));
        audio->index = index;
        audio->capability = V4L2_AUDCAP_STEREO;
        return 0;
        memset(aud_output, 0, sizeof(*aud_output));
        if (itv->card->video_outputs == NULL || index != 0)
                return -EINVAL;
-       strlcpy(aud_output->name, "A/V Audio Out", sizeof(aud_output->name));
+       strscpy(aud_output->name, "A/V Audio Out", sizeof(aud_output->name));
        return 0;
 }
 
 
        memset(&info, 0, sizeof(struct i2c_board_info));
        info.platform_data = init_data;
-       strlcpy(info.type, type, I2C_NAME_SIZE);
+       strscpy(info.type, type, I2C_NAME_SIZE);
 
        return i2c_new_probed_device(adap, &info, addr_list, NULL) == NULL ?
               -1 : 0;
        };
 
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+       strscpy(info.type, "ir_video", I2C_NAME_SIZE);
        return i2c_new_probed_device(&itv->i2c_adap, &info, addr_list, NULL);
 }
 
 
        struct ivtv *itv = id->itv;
        struct ivtv_stream *s = &itv->streams[id->type];
 
-       strlcpy(vcap->driver, IVTV_DRIVER_NAME, sizeof(vcap->driver));
-       strlcpy(vcap->card, itv->card_name, sizeof(vcap->card));
+       strscpy(vcap->driver, IVTV_DRIVER_NAME, sizeof(vcap->driver));
+       strscpy(vcap->card, itv->card_name, sizeof(vcap->card));
        snprintf(vcap->bus_info, sizeof(vcap->bus_info), "PCI:%s", pci_name(itv->pdev));
        vcap->capabilities = itv->v4l2_cap | V4L2_CAP_DEVICE_CAPS;
        vcap->device_caps = s->caps;
        ivtv_call_all(itv, tuner, g_tuner, vt);
 
        if (vt->type == V4L2_TUNER_RADIO)
-               strlcpy(vt->name, "ivtv Radio Tuner", sizeof(vt->name));
+               strscpy(vt->name, "ivtv Radio Tuner", sizeof(vt->name));
        else
-               strlcpy(vt->name, "ivtv TV Tuner", sizeof(vt->name));
+               strscpy(vt->name, "ivtv TV Tuner", sizeof(vt->name));
        return 0;
 }
 
 
 
        IVTVFB_DEBUG_INFO("ivtvfb_get_fix\n");
        memset(fix, 0, sizeof(struct fb_fix_screeninfo));
-       strlcpy(fix->id, "cx23415 TV out", sizeof(fix->id));
+       strscpy(fix->id, "cx23415 TV out", sizeof(fix->id));
        fix->smem_start = oi->video_pbase;
        fix->smem_len = oi->video_buffer_size;
        fix->type = FB_TYPE_PACKED_PIXELS;
 
        i2c->algo = &pt3_i2c_algo;
        i2c->algo_data = NULL;
        i2c->dev.parent = &pdev->dev;
-       strlcpy(i2c->name, DRV_NAME, sizeof(i2c->name));
+       strscpy(i2c->name, DRV_NAME, sizeof(i2c->name));
        i2c_set_adapdata(i2c, pt3);
        ret = i2c_add_adapter(i2c);
        if (ret < 0)
 
        if (f->index != 0)
                return -EINVAL;
 
-       strlcpy(f->description, "MPEG TS", sizeof(f->description));
+       strscpy(f->description, "MPEG TS", sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_MPEG;
        f->flags = V4L2_FMT_FLAG_COMPRESSED;
        return 0;
 
 
        go->board_id = GO7007_BOARDID_PCI_VOYAGER;
        snprintf(go->bus_info, sizeof(go->bus_info), "PCI:%s", pci_name(dev->pci));
-       strlcpy(go->name, saa7134_boards[dev->board].name, sizeof(go->name));
+       strscpy(go->name, saa7134_boards[dev->board].name, sizeof(go->name));
        go->hpi_ops = &saa7134_go7007_hpi_ops;
        go->hpi_context = saa;
        saa->dev = dev;
 
 
        memset(&info, 0, sizeof(struct i2c_board_info));
        memset(&dev->init_data, 0, sizeof(dev->init_data));
-       strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+       strscpy(info.type, "ir_video", I2C_NAME_SIZE);
 
        switch (dev->board) {
        case SAA7134_BOARD_PINNACLE_PCTV_110i:
 
        unsigned int tuner_type = dev->tuner_type;
 
        strcpy(cap->driver, "saa7134");
-       strlcpy(cap->card, saa7134_boards[dev->board].name,
+       strscpy(cap->card, saa7134_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
 
        if (f->index >= FORMATS)
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name,
+       strscpy(f->description, formats[f->index].name,
                sizeof(f->description));
 
        f->pixelformat = formats[f->index].fourcc;
        if ((f->index >= FORMATS) || formats[f->index].planar)
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name,
+       strscpy(f->description, formats[f->index].name,
                sizeof(f->description));
 
        f->pixelformat = formats[f->index].fourcc;
 
        DEB_EE("VIDIOC_G_TUNER: %d\n", t->index);
 
        memset(t, 0, sizeof(*t));
-       strlcpy(t->name, "TV Tuner", sizeof(t->name));
+       strscpy(t->name, "TV Tuner", sizeof(t->name));
        t->type = V4L2_TUNER_ANALOG_TV;
        t->capability = V4L2_TUNER_CAP_NORM | V4L2_TUNER_CAP_STEREO |
                        V4L2_TUNER_CAP_LANG1 | V4L2_TUNER_CAP_LANG2 | V4L2_TUNER_CAP_SAP;
 
 
        memset(&bi, 0, sizeof(bi));
 
-       strlcpy(bi.type, "si2157", I2C_NAME_SIZE);
+       strscpy(bi.type, "si2157", I2C_NAME_SIZE);
        bi.platform_data = cfg;
        bi.addr = addr8bit >> 1;
 
                        si2168_config.fe = &port->dvb.frontend;
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0xc8 >> 1;
                        info.platform_data = &si2168_config;
                        request_module(info.type);
                        si2157_config.if_port = 1;
                        si2157_config.fe = port->dvb.frontend;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0xc0 >> 1;
                        info.platform_data = &si2157_config;
                        request_module(info.type);
                        si2168_config.fe = &port->dvb.frontend;
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0xcc >> 1;
                        info.platform_data = &si2168_config;
                        request_module(info.type);
                        si2157_config.fe = port->dvb.frontend;
                        si2157_config.if_port = 1;
                        memset(&info, 0, sizeof(struct i2c_board_info));
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0xc0 >> 1;
                        info.platform_data = &si2157_config;
                        request_module(info.type);
 
        struct saa7164_dev *dev = port->dev;
 
        strcpy(cap->driver, dev->name);
-       strlcpy(cap->card, saa7164_boards[dev->board].name,
+       strscpy(cap->card, saa7164_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
 
        if (f->index != 0)
                return -EINVAL;
 
-       strlcpy(f->description, "MPEG", sizeof(f->description));
+       strscpy(f->description, "MPEG", sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_MPEG;
 
        return 0;
 
 
        bus->i2c_adap.dev.parent = &dev->pci->dev;
 
-       strlcpy(bus->i2c_adap.name, bus->dev->name,
+       strscpy(bus->i2c_adap.name, bus->dev->name,
                sizeof(bus->i2c_adap.name));
 
        bus->i2c_adap.algo_data = bus;
 
        struct saa7164_dev *dev = port->dev;
 
        strcpy(cap->driver, dev->name);
-       strlcpy(cap->card, saa7164_boards[dev->board].name,
+       strscpy(cap->card, saa7164_boards[dev->board].name,
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
 
 
        }
        /* attach tuner */
        ts2020_config.fe = port->fe;
-       strlcpy(tuner_info.type, "ts2020", I2C_NAME_SIZE);
+       strscpy(tuner_info.type, "ts2020", I2C_NAME_SIZE);
        tuner_info.addr = 0x60;
        tuner_info.platform_data = &ts2020_config;
        tuner_client = smi_add_i2c_client(tuner_i2c_adapter, &tuner_info);
        }
        /* attach tuner */
        m88rs6000t_config.fe = port->fe;
-       strlcpy(tuner_info.type, "m88rs6000t", I2C_NAME_SIZE);
+       strscpy(tuner_info.type, "m88rs6000t", I2C_NAME_SIZE);
        tuner_info.addr = 0x21;
        tuner_info.platform_data = &m88rs6000t_config;
        tuner_client = smi_add_i2c_client(tuner_i2c_adapter, &tuner_info);
        si2168_config.ts_mode = SI2168_TS_PARALLEL;
 
        memset(&client_info, 0, sizeof(struct i2c_board_info));
-       strlcpy(client_info.type, "si2168", I2C_NAME_SIZE);
+       strscpy(client_info.type, "si2168", I2C_NAME_SIZE);
        client_info.addr = 0x64;
        client_info.platform_data = &si2168_config;
 
        si2157_config.if_port = 1;
 
        memset(&client_info, 0, sizeof(struct i2c_board_info));
-       strlcpy(client_info.type, "si2157", I2C_NAME_SIZE);
+       strscpy(client_info.type, "si2157", I2C_NAME_SIZE);
        client_info.addr = 0x60;
        client_info.platform_data = &si2157_config;
 
 
                return -EINVAL;
 
        f->pixelformat = V4L2_PIX_FMT_UYVY;
-       strlcpy(f->description, "UYUV 4:2:2 Packed", sizeof(f->description));
+       strscpy(f->description, "UYUV 4:2:2 Packed", sizeof(f->description));
 
        return 0;
 }
 
           get recognized before the main driver is fully loaded */
        saa7146_write(dev, GPIO_CTRL, 0x500000);
 
-       strlcpy(av7110->i2c_adap.name, pci_ext->ext_priv, sizeof(av7110->i2c_adap.name));
+       strscpy(av7110->i2c_adap.name, pci_ext->ext_priv,
+               sizeof(av7110->i2c_adap.name));
 
        saa7146_i2c_adapter_prepare(dev, &av7110->i2c_adap, SAA7146_I2C_BUS_BIT_RATE_120); /* 275 kHz */
 
 
        if (bi->type != BUDGET_FS_ACTIVY)
                saa7146_write(dev, GPIO_CTRL, 0x500000);        /* GPIO 3 = 1 */
 
-       strlcpy(budget->i2c_adap.name, budget->card->name, sizeof(budget->i2c_adap.name));
+       strscpy(budget->i2c_adap.name, budget->card->name,
+               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);
 
        struct tw68_dev *dev = video_drvdata(file);
 
        strcpy(cap->driver, "tw68");
-       strlcpy(cap->card, "Techwell Capture Card",
+       strscpy(cap->card, "Techwell Capture Card",
                sizeof(cap->card));
        sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
        cap->device_caps =
        if (f->index >= FORMATS)
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name,
+       strscpy(f->description, formats[f->index].name,
                sizeof(f->description));
 
        f->pixelformat = formats[f->index].fourcc;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &tw686x_pcm_ops);
        snd_pcm_chip(pcm) = dev;
        pcm->info_flags = 0;
-       strlcpy(pcm->name, "tw686x PCM", sizeof(pcm->name));
+       strscpy(pcm->name, "tw686x PCM", sizeof(pcm->name));
 
        for (i = 0, ss = pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream;
             ss; ss = ss->next, i++)
                return err;
 
        dev->snd_card = card;
-       strlcpy(card->driver, "tw686x", sizeof(card->driver));
-       strlcpy(card->shortname, "tw686x", sizeof(card->shortname));
-       strlcpy(card->longname, pci_name(pci_dev), sizeof(card->longname));
+       strscpy(card->driver, "tw686x", sizeof(card->driver));
+       strscpy(card->shortname, "tw686x", sizeof(card->shortname));
+       strscpy(card->longname, pci_name(pci_dev), sizeof(card->longname));
        snd_card_set_dev(card, &pci_dev->dev);
 
        for (ch = 0; ch < max_channels(dev); ch++) {
 
        struct tw686x_video_channel *vc = video_drvdata(file);
        struct tw686x_dev *dev = vc->dev;
 
-       strlcpy(cap->driver, "tw686x", sizeof(cap->driver));
-       strlcpy(cap->card, dev->name, sizeof(cap->card));
+       strscpy(cap->driver, "tw686x", sizeof(cap->driver));
+       strscpy(cap->card, dev->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "PCI:%s", pci_name(dev->pci_dev));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
 
 
        vpfe_dbg(2, vpfe, "vpfe_querycap\n");
 
-       strlcpy(cap->driver, VPFE_MODULE_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, "TI AM437x VPFE", sizeof(cap->card));
+       strscpy(cap->driver, VPFE_MODULE_NAME, sizeof(cap->driver));
+       strscpy(cap->card, "TI AM437x VPFE", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                        "platform:%s", vpfe->v4l2_dev.name);
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
        INIT_LIST_HEAD(&vpfe->dma_queue);
 
        vdev = &vpfe->video_dev;
-       strlcpy(vdev->name, VPFE_MODULE_NAME, sizeof(vdev->name));
+       strscpy(vdev->name, VPFE_MODULE_NAME, sizeof(vdev->name));
        vdev->release = video_device_release_empty;
        vdev->fops = &vpfe_fops;
        vdev->ioctl_ops = &vpfe_ioctl_ops;
 
        INIT_WORK(&isc->awb_work, isc_awb_work);
 
        /* Register video device */
-       strlcpy(vdev->name, ATMEL_ISC_NAME, sizeof(vdev->name));
+       strscpy(vdev->name, ATMEL_ISC_NAME, sizeof(vdev->name));
        vdev->release           = video_device_release_empty;
        vdev->fops              = &isc_fops;
        vdev->ioctl_ops         = &isc_ioctl_ops;
 
 static int isi_querycap(struct file *file, void *priv,
                        struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, "atmel-isi", sizeof(cap->driver));
-       strlcpy(cap->card, "Atmel Image Sensor Interface", sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:isi", sizeof(cap->bus_info));
+       strscpy(cap->driver, "atmel-isi", sizeof(cap->driver));
+       strscpy(cap->card, "Atmel Image Sensor Interface", sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:isi", sizeof(cap->bus_info));
        return 0;
 }
 
                return -EINVAL;
 
        i->type = V4L2_INPUT_TYPE_CAMERA;
-       strlcpy(i->name, "Camera", sizeof(i->name));
+       strscpy(i->name, "Camera", sizeof(i->name));
        return 0;
 }
 
        isi->vdev->fops = &isi_fops;
        isi->vdev->v4l2_dev = &isi->v4l2_dev;
        isi->vdev->queue = &isi->queue;
-       strlcpy(isi->vdev->name, KBUILD_MODNAME, sizeof(isi->vdev->name));
+       strscpy(isi->vdev->name, KBUILD_MODNAME, sizeof(isi->vdev->name));
        isi->vdev->release = video_device_release;
        isi->vdev->ioctl_ops = &isi_ioctl_ops;
        isi->vdev->lock = &isi->lock;
 
 {
        struct coda_ctx *ctx = fh_to_ctx(priv);
 
-       strlcpy(cap->driver, CODA_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, coda_product_name(ctx->dev->devtype->product),
+       strscpy(cap->driver, CODA_NAME, sizeof(cap->driver));
+       strscpy(cap->card, coda_product_name(ctx->dev->devtype->product),
                sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:" CODA_NAME, sizeof(cap->bus_info));
+       strscpy(cap->bus_info, "platform:" CODA_NAME, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 
        if (i >= dev->devtype->num_vdevs)
                return -EINVAL;
 
-       strlcpy(vfd->name, dev->devtype->vdevs[i]->name, sizeof(vfd->name));
+       strscpy(vfd->name, dev->devtype->vdevs[i]->name, sizeof(vfd->name));
        vfd->fops       = &coda_fops;
        vfd->ioctl_ops  = &coda_ioctl_ops;
        vfd->release    = video_device_release_empty,
 
                dev_name(vpbe_dev->pdev));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(vpbe_dev->pdev));
-       strlcpy(cap->card, vpbe_dev->cfg->module_name, sizeof(cap->card));
+       strscpy(cap->card, vpbe_dev->cfg->module_name, sizeof(cap->card));
 
        return 0;
 }
 
 
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
-       strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
-       strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
-       strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
+       strscpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
+       strscpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
        return 0;
 }
 
 
 
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
-       strlcpy(cap->driver, VPIF_DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->driver, VPIF_DRIVER_NAME, sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(vpif_dev));
-       strlcpy(cap->card, config->card_name, sizeof(cap->card));
+       strscpy(cap->card, config->card_name, sizeof(cap->card));
 
        return 0;
 }
 
                /* Initialize the video_device structure */
                vdev = &ch->video_dev;
-               strlcpy(vdev->name, VPIF_DRIVER_NAME, sizeof(vdev->name));
+               strscpy(vdev->name, VPIF_DRIVER_NAME, sizeof(vdev->name));
                vdev->release = video_device_release_empty;
                vdev->fops = &vpif_fops;
                vdev->ioctl_ops = &vpif_ioctl_ops;
 
 
        cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
-       strlcpy(cap->driver, VPIF_DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->driver, VPIF_DRIVER_NAME, sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(vpif_dev));
-       strlcpy(cap->card, config->card_name, sizeof(cap->card));
+       strscpy(cap->card, config->card_name, sizeof(cap->card));
 
        return 0;
 }
 
                /* Initialize the video_device structure */
                vdev = &ch->video_dev;
-               strlcpy(vdev->name, VPIF_DRIVER_NAME, sizeof(vdev->name));
+               strscpy(vdev->name, VPIF_DRIVER_NAME, sizeof(vdev->name));
                vdev->release = video_device_release_empty;
                vdev->fops = &vpif_fops;
                vdev->ioctl_ops = &vpif_ioctl_ops;
 
        if (!fmt)
                return -EINVAL;
 
-       strlcpy(f->description, fmt->name, sizeof(f->description));
+       strscpy(f->description, fmt->name, sizeof(f->description));
        f->pixelformat = fmt->pixelformat;
 
        return 0;
 
        struct gsc_ctx *ctx = fh_to_ctx(fh);
        struct gsc_dev *gsc = ctx->gsc_dev;
 
-       strlcpy(cap->driver, GSC_MODULE_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, GSC_MODULE_NAME " gscaler", sizeof(cap->card));
+       strscpy(cap->driver, GSC_MODULE_NAME, sizeof(cap->driver));
+       strscpy(cap->card, GSC_MODULE_NAME " gscaler", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(&gsc->pdev->dev));
        cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
 
 void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
                                                unsigned int caps)
 {
-       strlcpy(cap->driver, dev->driver->name, sizeof(cap->driver));
-       strlcpy(cap->card, dev->driver->name, sizeof(cap->card));
+       strscpy(cap->driver, dev->driver->name, sizeof(cap->driver));
+       strscpy(cap->card, dev->driver->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                                "platform:%s", dev_name(dev));
        cap->device_caps = caps;
 
        fimc_md_graph_unlock(ve);
 
        if (sd)
-               strlcpy(i->name, sd->name, sizeof(i->name));
+               strscpy(i->name, sd->name, sizeof(i->name));
 
        return 0;
 }
 
        i2c_adap = &isp_i2c->adapter;
        i2c_adap->dev.of_node = node;
        i2c_adap->dev.parent = &pdev->dev;
-       strlcpy(i2c_adap->name, "exynos4x12-isp-i2c", sizeof(i2c_adap->name));
+       strscpy(i2c_adap->name, "exynos4x12-isp-i2c", sizeof(i2c_adap->name));
        i2c_adap->owner = THIS_MODULE;
        i2c_adap->algo = &fimc_is_i2c_algorithm;
        i2c_adap->class = I2C_CLASS_SPD;
 
        if (WARN_ON(fmt == NULL))
                return -EINVAL;
 
-       strlcpy(f->description, fmt->name, sizeof(f->description));
+       strscpy(f->description, fmt->name, sizeof(f->description));
        f->pixelformat = fmt->fourcc;
 
        return 0;
 
 {
        struct fimc_lite *fimc = video_drvdata(file);
 
-       strlcpy(cap->driver, FIMC_LITE_DRV_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, FIMC_LITE_DRV_NAME, sizeof(cap->card));
+       strscpy(cap->driver, FIMC_LITE_DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->card, FIMC_LITE_DRV_NAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                                        dev_name(&fimc->pdev->dev));
 
                return -EINVAL;
 
        fmt = &fimc_lite_formats[f->index];
-       strlcpy(f->description, fmt->name, sizeof(f->description));
+       strscpy(f->description, fmt->name, sizeof(f->description));
        f->pixelformat = fmt->fourcc;
 
        return 0;
 
        struct fimc_md *fmd = dev_get_drvdata(dev);
 
        if (fmd->user_subdev_api)
-               return strlcpy(buf, "Sub-device API (sub-dev)\n", PAGE_SIZE);
+               return strscpy(buf, "Sub-device API (sub-dev)\n", PAGE_SIZE);
 
-       return strlcpy(buf, "V4L2 video node only API (vid-dev)\n", PAGE_SIZE);
+       return strscpy(buf, "V4L2 video node only API (vid-dev)\n", PAGE_SIZE);
 }
 
 static ssize_t fimc_md_sysfs_store(struct device *dev,
        INIT_LIST_HEAD(&fmd->pipelines);
        fmd->pdev = pdev;
 
-       strlcpy(fmd->media_dev.model, "SAMSUNG S5P FIMC",
+       strscpy(fmd->media_dev.model, "SAMSUNG S5P FIMC",
                sizeof(fmd->media_dev.model));
        fmd->media_dev.ops = &fimc_md_ops;
        fmd->media_dev.dev = dev;
        v4l2_dev = &fmd->v4l2_dev;
        v4l2_dev->mdev = &fmd->media_dev;
        v4l2_dev->notify = fimc_sensor_notify;
-       strlcpy(v4l2_dev->name, "s5p-fimc-md", sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, "s5p-fimc-md", sizeof(v4l2_dev->name));
 
        fmd->use_isp = fimc_md_is_isp_available(dev->of_node);
        fmd->user_subdev_api = true;
 
 static int vidioc_querycap(struct file *file, void *priv,
                           struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, MEM2MEM_NAME, sizeof(cap->card));
-       strlcpy(cap->bus_info, MEM2MEM_NAME, sizeof(cap->card));
+       strscpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver));
+       strscpy(cap->card, MEM2MEM_NAME, sizeof(cap->card));
+       strscpy(cap->bus_info, MEM2MEM_NAME, sizeof(cap->card));
        /*
         * This is only a mem-to-mem video device. The capture and output
         * device capability flags are left only for backward compatibility
        if (i < NUM_FORMATS) {
                /* Format found */
                fmt = &formats[i];
-               strlcpy(f->description, fmt->name, sizeof(f->description));
+               strscpy(f->description, fmt->name, sizeof(f->description));
                f->pixelformat = fmt->fourcc;
                return 0;
        }
 
 
        strcpy(cap->driver, "marvell_ccic");
        strcpy(cap->card, "marvell_ccic");
-       strlcpy(cap->bus_info, cam->bus_info, sizeof(cap->bus_info));
+       strscpy(cap->bus_info, cam->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
                V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 {
        if (fmt->index >= N_MCAM_FMTS)
                return -EINVAL;
-       strlcpy(fmt->description, mcam_formats[fmt->index].desc,
-                       sizeof(fmt->description));
+       strscpy(fmt->description, mcam_formats[fmt->index].desc,
+               sizeof(fmt->description));
        fmt->pixelformat = mcam_formats[fmt->index].pixelformat;
        return 0;
 }
 
        mcam->lane = pdata->lane;
        mcam->chip_id = MCAM_ARMADA610;
        mcam->buffer_mode = B_DMA_sg;
-       strlcpy(mcam->bus_info, "platform:mmp-camera", sizeof(mcam->bus_info));
+       strscpy(mcam->bus_info, "platform:mmp-camera", sizeof(mcam->bus_info));
        spin_lock_init(&mcam->dev_lock);
        /*
         * Get our I/O memory.
 
 {
        struct mtk_jpeg_dev *jpeg = video_drvdata(file);
 
-       strlcpy(cap->driver, MTK_JPEG_NAME " decoder", sizeof(cap->driver));
-       strlcpy(cap->card, MTK_JPEG_NAME " decoder", sizeof(cap->card));
+       strscpy(cap->driver, MTK_JPEG_NAME " decoder", sizeof(cap->driver));
+       strscpy(cap->card, MTK_JPEG_NAME " decoder", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(jpeg->dev));
 
 
        struct mtk_mdp_ctx *ctx = fh_to_ctx(fh);
        struct mtk_mdp_dev *mdp = ctx->mdp_dev;
 
-       strlcpy(cap->driver, MTK_MDP_MODULE_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, mdp->pdev->name, sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:mt8173", sizeof(cap->bus_info));
+       strscpy(cap->driver, MTK_MDP_MODULE_NAME, sizeof(cap->driver));
+       strscpy(cap->card, mdp->pdev->name, sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:mt8173", sizeof(cap->bus_info));
 
        return 0;
 }
 
 static int vidioc_vdec_querycap(struct file *file, void *priv,
                                struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, MTK_VCODEC_DEC_NAME, sizeof(cap->driver));
-       strlcpy(cap->bus_info, MTK_PLATFORM_STR, sizeof(cap->bus_info));
-       strlcpy(cap->card, MTK_PLATFORM_STR, sizeof(cap->card));
+       strscpy(cap->driver, MTK_VCODEC_DEC_NAME, sizeof(cap->driver));
+       strscpy(cap->bus_info, MTK_PLATFORM_STR, sizeof(cap->bus_info));
+       strscpy(cap->card, MTK_PLATFORM_STR, sizeof(cap->card));
 
        return 0;
 }
 
 static int vidioc_venc_querycap(struct file *file, void *priv,
                                struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, MTK_VCODEC_ENC_NAME, sizeof(cap->driver));
-       strlcpy(cap->bus_info, MTK_PLATFORM_STR, sizeof(cap->bus_info));
-       strlcpy(cap->card, MTK_PLATFORM_STR, sizeof(cap->card));
+       strscpy(cap->driver, MTK_VCODEC_ENC_NAME, sizeof(cap->driver));
+       strscpy(cap->bus_info, MTK_PLATFORM_STR, sizeof(cap->bus_info));
+       strscpy(cap->card, MTK_PLATFORM_STR, sizeof(cap->card));
 
        return 0;
 }
 
        if (i < NUM_FORMATS) {
                /* Format found */
                fmt = &formats[i];
-               strlcpy(f->description, fmt->name, sizeof(f->description) - 1);
+               strscpy(f->description, fmt->name, sizeof(f->description) - 1);
                f->pixelformat = fmt->fourcc;
                return 0;
        }
 
 {
        struct omap_vout_device *vout = fh;
 
-       strlcpy(cap->driver, VOUT_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, vout->vfd->name, sizeof(cap->card));
+       strscpy(cap->driver, VOUT_NAME, sizeof(cap->driver));
+       strscpy(cap->card, vout->vfd->name, sizeof(cap->card));
        cap->bus_info[0] = '\0';
        cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_OUTPUT |
                V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
                return -EINVAL;
 
        fmt->flags = omap_formats[index].flags;
-       strlcpy(fmt->description, omap_formats[index].description,
-                       sizeof(fmt->description));
+       strscpy(fmt->description, omap_formats[index].description,
+               sizeof(fmt->description));
        fmt->pixelformat = omap_formats[index].pixelformat;
 
        return 0;
        vfd->release = video_device_release;
        vfd->ioctl_ops = &vout_ioctl_ops;
 
-       strlcpy(vfd->name, VOUT_NAME, sizeof(vfd->name));
+       strscpy(vfd->name, VOUT_NAME, sizeof(vfd->name));
 
        vfd->fops = &omap_vout_fops;
        vfd->v4l2_dev = &vout->vid_dev->v4l2_dev;
 
        int ret;
 
        isp->media_dev.dev = isp->dev;
-       strlcpy(isp->media_dev.model, "TI OMAP3 ISP",
+       strscpy(isp->media_dev.model, "TI OMAP3 ISP",
                sizeof(isp->media_dev.model));
        isp->media_dev.hw_revision = isp->revision;
        isp->media_dev.ops = &isp_media_ops;
 
 
        v4l2_subdev_init(sd, &ccdc_v4l2_ops);
        sd->internal_ops = &ccdc_v4l2_internal_ops;
-       strlcpy(sd->name, "OMAP3 ISP CCDC", sizeof(sd->name));
+       strscpy(sd->name, "OMAP3 ISP CCDC", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for isp subdevs */
        v4l2_set_subdevdata(sd, ccdc);
        sd->flags |= V4L2_SUBDEV_FL_HAS_EVENTS | V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        v4l2_subdev_init(sd, &ccp2_sd_ops);
        sd->internal_ops = &ccp2_sd_internal_ops;
-       strlcpy(sd->name, "OMAP3 ISP CCP2", sizeof(sd->name));
+       strscpy(sd->name, "OMAP3 ISP CCP2", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for isp subdevs */
        v4l2_set_subdevdata(sd, ccp2);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        v4l2_subdev_init(sd, &csi2_ops);
        sd->internal_ops = &csi2_internal_ops;
-       strlcpy(sd->name, "OMAP3 ISP CSI2a", sizeof(sd->name));
+       strscpy(sd->name, "OMAP3 ISP CSI2a", sizeof(sd->name));
 
        sd->grp_id = 1 << 16;   /* group ID for isp subdevs */
        v4l2_set_subdevdata(sd, csi2);
 
 
        v4l2_subdev_init(sd, &preview_v4l2_ops);
        sd->internal_ops = &preview_v4l2_internal_ops;
-       strlcpy(sd->name, "OMAP3 ISP preview", sizeof(sd->name));
+       strscpy(sd->name, "OMAP3 ISP preview", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for isp subdevs */
        v4l2_set_subdevdata(sd, prev);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        v4l2_subdev_init(sd, &resizer_v4l2_ops);
        sd->internal_ops = &resizer_v4l2_internal_ops;
-       strlcpy(sd->name, "OMAP3 ISP resizer", sizeof(sd->name));
+       strscpy(sd->name, "OMAP3 ISP resizer", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for isp subdevs */
        v4l2_set_subdevdata(sd, res);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 {
        struct isp_video *video = video_drvdata(file);
 
-       strlcpy(cap->driver, ISP_VIDEO_DRIVER_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, video->video.name, sizeof(cap->card));
-       strlcpy(cap->bus_info, "media", sizeof(cap->bus_info));
+       strscpy(cap->driver, ISP_VIDEO_DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->card, video->video.name, sizeof(cap->card));
+       strscpy(cap->bus_info, "media", sizeof(cap->bus_info));
 
        cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT
                | V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
        if (input->index > 0)
                return -EINVAL;
 
-       strlcpy(input->name, "camera", sizeof(input->name));
+       strscpy(input->name, "camera", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
 
        return 0;
 
 static int pxac_vidioc_querycap(struct file *file, void *priv,
                                struct v4l2_capability *cap)
 {
-       strlcpy(cap->bus_info, "platform:pxa-camera", sizeof(cap->bus_info));
-       strlcpy(cap->driver, PXA_CAM_DRV_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, pxa_cam_driver_description, sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:pxa-camera", sizeof(cap->bus_info));
+       strscpy(cap->driver, PXA_CAM_DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->card, pxa_cam_driver_description, sizeof(cap->card));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 
                return -EINVAL;
 
        i->type = V4L2_INPUT_TYPE_CAMERA;
-       strlcpy(i->name, "Camera", sizeof(i->name));
+       strscpy(i->name, "Camera", sizeof(i->name));
 
        return 0;
 }
 
 {
        struct camss_video *video = video_drvdata(file);
 
-       strlcpy(cap->driver, "qcom-camss", sizeof(cap->driver));
-       strlcpy(cap->card, "Qualcomm Camera Subsystem", sizeof(cap->card));
+       strscpy(cap->driver, "qcom-camss", sizeof(cap->driver));
+       strscpy(cap->card, "Qualcomm Camera Subsystem", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(video->camss->dev));
 
        if (input->index > 0)
                return -EINVAL;
 
-       strlcpy(input->name, "camera", sizeof(input->name));
+       strscpy(input->name, "camera", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
 
        return 0;
        vdev->vfl_dir = VFL_DIR_RX;
        vdev->queue = &video->vb2_q;
        vdev->lock = &video->lock;
-       strlcpy(vdev->name, name, sizeof(vdev->name));
+       strscpy(vdev->name, name, sizeof(vdev->name));
 
        ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1);
        if (ret < 0) {
 
                return ret;
 
        camss->media_dev.dev = camss->dev;
-       strlcpy(camss->media_dev.model, "Qualcomm Camera Subsystem",
+       strscpy(camss->media_dev.model, "Qualcomm Camera Subsystem",
                sizeof(camss->media_dev.model));
        camss->media_dev.ops = &camss_media_ops;
        media_device_init(&camss->media_dev);
 
 static int
 vdec_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, "qcom-venus", sizeof(cap->driver));
-       strlcpy(cap->card, "Qualcomm Venus video decoder", sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:qcom-venus", sizeof(cap->bus_info));
+       strscpy(cap->driver, "qcom-venus", sizeof(cap->driver));
+       strscpy(cap->card, "Qualcomm Venus video decoder", sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:qcom-venus", sizeof(cap->bus_info));
 
        return 0;
 }
        if (!vdev)
                return -ENOMEM;
 
-       strlcpy(vdev->name, "qcom-venus-decoder", sizeof(vdev->name));
+       strscpy(vdev->name, "qcom-venus-decoder", sizeof(vdev->name));
        vdev->release = video_device_release;
        vdev->fops = &vdec_fops;
        vdev->ioctl_ops = &vdec_ioctl_ops;
 
 static int
 venc_querycap(struct file *file, void *fh, struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, "qcom-venus", sizeof(cap->driver));
-       strlcpy(cap->card, "Qualcomm Venus video encoder", sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:qcom-venus", sizeof(cap->bus_info));
+       strscpy(cap->driver, "qcom-venus", sizeof(cap->driver));
+       strscpy(cap->card, "Qualcomm Venus video encoder", sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:qcom-venus", sizeof(cap->bus_info));
 
        return 0;
 }
        if (!vdev)
                return -ENOMEM;
 
-       strlcpy(vdev->name, "qcom-venus-encoder", sizeof(vdev->name));
+       strscpy(vdev->name, "qcom-venus-encoder", sizeof(vdev->name));
        vdev->release = video_device_release;
        vdev->fops = &venc_fops;
        vdev->ioctl_ops = &venc_ioctl_ops;
 
        match = of_match_node(vin->dev->driver->of_match_table,
                              vin->dev->of_node);
 
-       strlcpy(mdev->driver_name, KBUILD_MODNAME, sizeof(mdev->driver_name));
-       strlcpy(mdev->model, match->compatible, sizeof(mdev->model));
+       strscpy(mdev->driver_name, KBUILD_MODNAME, sizeof(mdev->driver_name));
+       strscpy(mdev->model, match->compatible, sizeof(mdev->model));
        snprintf(mdev->bus_info, sizeof(mdev->bus_info), "platform:%s",
                 dev_name(mdev->dev));
 
 
 {
        struct rvin_dev *vin = video_drvdata(file);
 
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, "R_Car_VIN", sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, "R_Car_VIN", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(vin->dev));
        return 0;
                i->std = vin->vdev.tvnorms;
        }
 
-       strlcpy(i->name, "Camera", sizeof(i->name));
+       strscpy(i->name, "Camera", sizeof(i->name));
 
        return 0;
 }
                return -EINVAL;
 
        i->type = V4L2_INPUT_TYPE_CAMERA;
-       strlcpy(i->name, "Camera", sizeof(i->name));
+       strscpy(i->name, "Camera", sizeof(i->name));
 
        return 0;
 }
 
 {
        struct rcar_drif_sdr *sdr = video_drvdata(file);
 
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, sdr->vdev->name, sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, sdr->vdev->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 sdr->vdev->name);
 
 
 static int fdp1_vidioc_querycap(struct file *file, void *priv,
                           struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, DRIVER_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, DRIVER_NAME, sizeof(cap->card));
+       strscpy(cap->driver, DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->card, DRIVER_NAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                        "platform:%s", DRIVER_NAME);
        return 0;
        vfd->lock = &fdp1->dev_mutex;
        vfd->v4l2_dev = &fdp1->v4l2_dev;
        video_set_drvdata(vfd, fdp1);
-       strlcpy(vfd->name, fdp1_videodev.name, sizeof(vfd->name));
+       strscpy(vfd->name, fdp1_videodev.name, sizeof(vfd->name));
 
        ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0);
        if (ret) {
 
        struct jpu_ctx *ctx = fh_to_ctx(priv);
 
        if (ctx->encoder)
-               strlcpy(cap->card, DRV_NAME " encoder", sizeof(cap->card));
+               strscpy(cap->card, DRV_NAME " encoder", sizeof(cap->card));
        else
-               strlcpy(cap->card, DRV_NAME " decoder", sizeof(cap->card));
+               strscpy(cap->card, DRV_NAME " decoder", sizeof(cap->card));
 
-       strlcpy(cap->driver, DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->driver, DRV_NAME, sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(ctx->jpu->dev));
        cap->device_caps |= V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
        for (i = 0; i < JPU_MAX_QUALITY; i++)
                jpu_generate_hdr(i, (unsigned char *)jpeg_hdrs[i]);
 
-       strlcpy(jpu->vfd_encoder.name, DRV_NAME, sizeof(jpu->vfd_encoder.name));
+       strscpy(jpu->vfd_encoder.name, DRV_NAME, sizeof(jpu->vfd_encoder.name));
        jpu->vfd_encoder.fops           = &jpu_fops;
        jpu->vfd_encoder.ioctl_ops      = &jpu_ioctl_ops;
        jpu->vfd_encoder.minor          = -1;
 
        video_set_drvdata(&jpu->vfd_encoder, jpu);
 
-       strlcpy(jpu->vfd_decoder.name, DRV_NAME, sizeof(jpu->vfd_decoder.name));
+       strscpy(jpu->vfd_decoder.name, DRV_NAME, sizeof(jpu->vfd_decoder.name));
        jpu->vfd_decoder.fops           = &jpu_fops;
        jpu->vfd_decoder.ioctl_ops      = &jpu_ioctl_ops;
        jpu->vfd_decoder.minor          = -1;
 
 {
        struct ceu_device *ceudev = video_drvdata(file);
 
-       strlcpy(cap->card, "Renesas CEU", sizeof(cap->card));
-       strlcpy(cap->driver, DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->card, "Renesas CEU", sizeof(cap->card));
+       strscpy(cap->driver, DRIVER_NAME, sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "platform:renesas-ceu-%s", dev_name(ceudev->dev));
 
                return ret;
 
        /* Register the video device. */
-       strlcpy(vdev->name, DRIVER_NAME, sizeof(vdev->name));
+       strscpy(vdev->name, DRIVER_NAME, sizeof(vdev->name));
        vdev->v4l2_dev          = v4l2_dev;
        vdev->lock              = &ceudev->mlock;
        vdev->queue             = &ceudev->vb2_vq;
 
 static int
 vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, RGA_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, "rockchip-rga", sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:rga", sizeof(cap->bus_info));
+       strscpy(cap->driver, RGA_NAME, sizeof(cap->driver));
+       strscpy(cap->card, "rockchip-rga", sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:rga", sizeof(cap->bus_info));
 
        return 0;
 }
 
 {
        struct camif_vp *vp = video_drvdata(file);
 
-       strlcpy(cap->driver, S3C_CAMIF_DRIVER_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, S3C_CAMIF_DRIVER_NAME, sizeof(cap->card));
+       strscpy(cap->driver, S3C_CAMIF_DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->card, S3C_CAMIF_DRIVER_NAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s.%d",
                 dev_name(vp->camif->dev), vp->id);
 
                return -EINVAL;
 
        input->type = V4L2_INPUT_TYPE_CAMERA;
-       strlcpy(input->name, sensor->name, sizeof(input->name));
+       strscpy(input->name, sensor->name, sizeof(input->name));
        return 0;
 }
 
        if (!fmt)
                return -EINVAL;
 
-       strlcpy(f->description, fmt->name, sizeof(f->description));
+       strscpy(f->description, fmt->name, sizeof(f->description));
        f->pixelformat = fmt->fourcc;
 
        pr_debug("fmt(%d): %s\n", f->index, f->description);
 
        v4l2_subdev_init(sd, &s3c_camif_subdev_ops);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
-       strlcpy(sd->name, "S3C-CAMIF", sizeof(sd->name));
+       strscpy(sd->name, "S3C-CAMIF", sizeof(sd->name));
 
        camif->pads[CAMIF_SD_PAD_SINK].flags = MEDIA_PAD_FL_SINK;
        camif->pads[CAMIF_SD_PAD_SOURCE_C].flags = MEDIA_PAD_FL_SOURCE;
 
        memset(md, 0, sizeof(*md));
        snprintf(md->model, sizeof(md->model), "SAMSUNG S3C%s CAMIF",
                 ip_rev == S3C6410_CAMIF_IP_REV ? "6410" : "244X");
-       strlcpy(md->bus_info, "platform", sizeof(md->bus_info));
+       strscpy(md->bus_info, "platform", sizeof(md->bus_info));
        md->hw_revision = ip_rev;
 
        md->dev = camif->dev;
 
-       strlcpy(v4l2_dev->name, "s3c-camif", sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, "s3c-camif", sizeof(v4l2_dev->name));
        v4l2_dev->mdev = md;
 
        media_device_init(md);
 
        struct s5p_jpeg_ctx *ctx = fh_to_ctx(priv);
 
        if (ctx->mode == S5P_JPEG_ENCODE) {
-               strlcpy(cap->driver, S5P_JPEG_M2M_NAME,
+               strscpy(cap->driver, S5P_JPEG_M2M_NAME,
                        sizeof(cap->driver));
-               strlcpy(cap->card, S5P_JPEG_M2M_NAME " encoder",
+               strscpy(cap->card, S5P_JPEG_M2M_NAME " encoder",
                        sizeof(cap->card));
        } else {
-               strlcpy(cap->driver, S5P_JPEG_M2M_NAME,
+               strscpy(cap->driver, S5P_JPEG_M2M_NAME,
                        sizeof(cap->driver));
-               strlcpy(cap->card, S5P_JPEG_M2M_NAME " decoder",
+               strscpy(cap->card, S5P_JPEG_M2M_NAME " decoder",
                        sizeof(cap->card));
        }
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
        if (i >= n)
                return -EINVAL;
 
-       strlcpy(f->description, sjpeg_formats[i].name, sizeof(f->description));
+       strscpy(f->description, sjpeg_formats[i].name, sizeof(f->description));
        f->pixelformat = sjpeg_formats[i].fourcc;
 
        return 0;
 
 {
        struct s5p_mfc_dev *dev = video_drvdata(file);
 
-       strlcpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, dev->vfd_dec->name, sizeof(cap->card));
+       strscpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver));
+       strscpy(cap->card, dev->vfd_dec->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(&dev->plat_dev->dev));
        /*
        if (i == ARRAY_SIZE(formats))
                return -EINVAL;
        fmt = &formats[i];
-       strlcpy(f->description, fmt->name, sizeof(f->description));
+       strscpy(f->description, fmt->name, sizeof(f->description));
        f->pixelformat = fmt->fourcc;
        return 0;
 }
 
 {
        struct s5p_mfc_dev *dev = video_drvdata(file);
 
-       strlcpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, dev->vfd_enc->name, sizeof(cap->card));
+       strscpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver));
+       strscpy(cap->card, dev->vfd_enc->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(&dev->plat_dev->dev));
        /*
 
                if (j == f->index) {
                        fmt = &formats[i];
-                       strlcpy(f->description, fmt->name,
+                       strscpy(f->description, fmt->name,
                                sizeof(f->description));
                        f->pixelformat = fmt->fourcc;
                        return 0;
 
 static int sh_veu_querycap(struct file *file, void *priv,
                           struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, "sh-veu", sizeof(cap->driver));
-       strlcpy(cap->card, "sh-mobile VEU", sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:sh-veu", sizeof(cap->bus_info));
+       strscpy(cap->driver, "sh-veu", sizeof(cap->driver));
+       strscpy(cap->card, "sh-mobile VEU", sizeof(cap->card));
+       strscpy(cap->bus_info, "platform:sh-veu", sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 
        if (f->index >= fmt_num)
                return -EINVAL;
 
-       strlcpy(f->description, sh_veu_fmt[fmt[f->index]].name, sizeof(f->description));
+       strscpy(f->description, sh_veu_fmt[fmt[f->index]].name,
+               sizeof(f->description));
        f->pixelformat = sh_veu_fmt[fmt[f->index]].fourcc;
        return 0;
 }
 
 
        dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
 
-       strlcpy(cap->card, "SuperH VOU", sizeof(cap->card));
-       strlcpy(cap->driver, "sh-vou", sizeof(cap->driver));
-       strlcpy(cap->bus_info, "platform:sh-vou", sizeof(cap->bus_info));
+       strscpy(cap->card, "SuperH VOU", sizeof(cap->card));
+       strscpy(cap->driver, "sh-vou", sizeof(cap->driver));
+       strscpy(cap->bus_info, "platform:sh-vou", sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_READWRITE |
                           V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
 
        fmt->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-       strlcpy(fmt->description, vou_fmt[fmt->index].desc,
+       strscpy(fmt->description, vou_fmt[fmt->index].desc,
                sizeof(fmt->description));
        fmt->pixelformat = vou_fmt[fmt->index].pfmt;
 
 
        if (a->index)
                return -EINVAL;
-       strlcpy(a->name, "Video Out", sizeof(a->name));
+       strscpy(a->name, "Video Out", sizeof(a->name));
        a->type = V4L2_OUTPUT_TYPE_ANALOG;
        a->std = vou_dev->vdev.tvnorms;
        return 0;
 
 static int sh_mobile_ceu_querycap(struct soc_camera_host *ici,
                                  struct v4l2_capability *cap)
 {
-       strlcpy(cap->card, "SuperH_Mobile_CEU", sizeof(cap->card));
-       strlcpy(cap->driver, "sh_mobile_ceu", sizeof(cap->driver));
-       strlcpy(cap->bus_info, "platform:sh_mobile_ceu", sizeof(cap->bus_info));
+       strscpy(cap->card, "SuperH_Mobile_CEU", sizeof(cap->card));
+       strscpy(cap->driver, "sh_mobile_ceu", sizeof(cap->driver));
+       strscpy(cap->bus_info, "platform:sh_mobile_ceu", sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 
 
        format = icd->user_formats[f->index].host_fmt;
 
        if (format->name)
-               strlcpy(f->description, format->name, sizeof(f->description));
+               strscpy(f->description, format->name, sizeof(f->description));
        f->pixelformat = format->fourcc;
        return 0;
 }
 
        WARN_ON(priv != file->private_data);
 
-       strlcpy(cap->driver, ici->drv_name, sizeof(cap->driver));
+       strscpy(cap->driver, ici->drv_name, sizeof(cap->driver));
        return ici->ops->querycap(ici, cap);
 }
 
        if (!vdev)
                return -ENOMEM;
 
-       strlcpy(vdev->name, ici->drv_name, sizeof(vdev->name));
+       strscpy(vdev->name, ici->drv_name, sizeof(vdev->name));
 
        vdev->v4l2_dev          = &ici->v4l2_dev;
        vdev->fops              = &soc_camera_fops;
 
 
        v4l2_subdev_init(&priv->subdev, &platform_subdev_ops);
        v4l2_set_subdevdata(&priv->subdev, p);
-       strlcpy(priv->subdev.name, dev_name(&pdev->dev),
+       strscpy(priv->subdev.name, dev_name(&pdev->dev),
                sizeof(priv->subdev.name));
 
        return v4l2_device_register_subdev(&ici->v4l2_dev, &priv->subdev);
 
        struct bdisp_ctx *ctx = fh_to_ctx(fh);
        struct bdisp_dev *bdisp = ctx->bdisp_dev;
 
-       strlcpy(cap->driver, bdisp->pdev->name, sizeof(cap->driver));
-       strlcpy(cap->card, bdisp->pdev->name, sizeof(cap->card));
+       strscpy(cap->driver, bdisp->pdev->name, sizeof(cap->driver));
+       strscpy(cap->card, bdisp->pdev->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s%d",
                 BDISP_NAME, bdisp->id);
 
 
        struct delta_ctx *ctx = to_ctx(file->private_data);
        struct delta_dev *delta = ctx->dev;
 
-       strlcpy(cap->driver, DELTA_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, delta->vdev->name, sizeof(cap->card));
+       strscpy(cap->driver, DELTA_NAME, sizeof(cap->driver));
+       strscpy(cap->card, delta->vdev->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 delta->pdev->name);
 
 
        struct hva_ctx *ctx = fh_to_ctx(file->private_data);
        struct hva_dev *hva = ctx_to_hdev(ctx);
 
-       strlcpy(cap->driver, HVA_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, hva->vdev->name, sizeof(cap->card));
+       strscpy(cap->driver, HVA_NAME, sizeof(cap->driver));
+       strscpy(cap->card, hva->vdev->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 hva->pdev->name);
 
 
 static int dcmi_querycap(struct file *file, void *priv,
                         struct v4l2_capability *cap)
 {
-       strlcpy(cap->driver, DRV_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, "STM32 Camera Memory Interface",
+       strscpy(cap->driver, DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->card, "STM32 Camera Memory Interface",
                sizeof(cap->card));
-       strlcpy(cap->bus_info, "platform:dcmi", sizeof(cap->bus_info));
+       strscpy(cap->bus_info, "platform:dcmi", sizeof(cap->bus_info));
        return 0;
 }
 
                return -EINVAL;
 
        i->type = V4L2_INPUT_TYPE_CAMERA;
-       strlcpy(i->name, "Camera", sizeof(i->name));
+       strscpy(i->name, "Camera", sizeof(i->name));
        return 0;
 }
 
        dcmi->vdev->fops = &dcmi_fops;
        dcmi->vdev->v4l2_dev = &dcmi->v4l2_dev;
        dcmi->vdev->queue = &dcmi->queue;
-       strlcpy(dcmi->vdev->name, KBUILD_MODNAME, sizeof(dcmi->vdev->name));
+       strscpy(dcmi->vdev->name, KBUILD_MODNAME, sizeof(dcmi->vdev->name));
        dcmi->vdev->release = video_device_release;
        dcmi->vdev->ioctl_ops = &dcmi_ioctl_ops;
        dcmi->vdev->lock = &dcmi->lock;
 
 {
        struct cal_ctx *ctx = video_drvdata(file);
 
-       strlcpy(cap->driver, CAL_MODULE_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, CAL_MODULE_NAME, sizeof(cap->card));
+       strscpy(cap->driver, CAL_MODULE_NAME, sizeof(cap->driver));
+       strscpy(cap->card, CAL_MODULE_NAME, sizeof(cap->card));
 
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "platform:%s", ctx->v4l2_dev.name);
                return -ENOMEM;
 
        /* set pseudo v4l2 device name so we can use v4l2_printk */
-       strlcpy(dev->v4l2_dev.name, CAL_MODULE_NAME,
+       strscpy(dev->v4l2_dev.name, CAL_MODULE_NAME,
                sizeof(dev->v4l2_dev.name));
 
        /* save pdev pointer */
 
 {
        if (fmt->index >= N_VIA_FMTS)
                return -EINVAL;
-       strlcpy(fmt->description, via_formats[fmt->index].desc,
-                       sizeof(fmt->description));
+       strscpy(fmt->description, via_formats[fmt->index].desc,
+               sizeof(fmt->description));
        fmt->pixelformat = via_formats[fmt->index].pixelformat;
        return 0;
 }
 
 
 #ifdef CONFIG_MEDIA_CONTROLLER
        dev->mdev.dev = &pdev->dev;
-       strlcpy(dev->mdev.model, "vicodec", sizeof(dev->mdev.model));
+       strscpy(dev->mdev.model, "vicodec", sizeof(dev->mdev.model));
        media_device_init(&dev->mdev);
        dev->v4l2_dev.mdev = &dev->mdev;
 #endif
        vfd = &dev->enc_vfd;
        vfd->lock = &dev->enc_mutex;
        vfd->v4l2_dev = &dev->v4l2_dev;
-       strlcpy(vfd->name, "vicodec-enc", sizeof(vfd->name));
+       strscpy(vfd->name, "vicodec-enc", sizeof(vfd->name));
        v4l2_disable_ioctl(vfd, VIDIOC_DECODER_CMD);
        v4l2_disable_ioctl(vfd, VIDIOC_TRY_DECODER_CMD);
        video_set_drvdata(vfd, dev);
        vfd = &dev->dec_vfd;
        vfd->lock = &dev->dec_mutex;
        vfd->v4l2_dev = &dev->v4l2_dev;
-       strlcpy(vfd->name, "vicodec-dec", sizeof(vfd->name));
+       strscpy(vfd->name, "vicodec-dec", sizeof(vfd->name));
        v4l2_disable_ioctl(vfd, VIDIOC_ENCODER_CMD);
        v4l2_disable_ioctl(vfd, VIDIOC_TRY_ENCODER_CMD);
        video_set_drvdata(vfd, dev);
 
 
 #ifdef CONFIG_MEDIA_CONTROLLER
        dev->mdev.dev = &pdev->dev;
-       strlcpy(dev->mdev.model, "vim2m", sizeof(dev->mdev.model));
+       strscpy(dev->mdev.model, "vim2m", sizeof(dev->mdev.model));
        media_device_init(&dev->mdev);
        dev->v4l2_dev.mdev = &dev->mdev;
 
 
 {
        struct vimc_cap_device *vcap = video_drvdata(file);
 
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, KBUILD_MODNAME, sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, KBUILD_MODNAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "platform:%s", vcap->vdev.v4l2_dev->name);
 
        vdev->queue = q;
        vdev->v4l2_dev = v4l2_dev;
        vdev->vfl_dir = VFL_DIR_RX;
-       strlcpy(vdev->name, pdata->entity_name, sizeof(vdev->name));
+       strscpy(vdev->name, pdata->entity_name, sizeof(vdev->name));
        video_set_drvdata(vdev, &vcap->ved);
 
        /* Register the video_device with the v4l2 and the media framework */
 
        sd->entity.function = function;
        sd->entity.ops = &vimc_ent_sd_mops;
        sd->owner = THIS_MODULE;
-       strlcpy(sd->name, name, sizeof(sd->name));
+       strscpy(sd->name, name, sizeof(sd->name));
        v4l2_set_subdevdata(sd, ved);
 
        /* Expose this subdev to user space */
 
                dev_dbg(&vimc->pdev.dev, "new pdev for %s\n",
                        vimc->pipe_cfg->ents[i].drv);
 
-               strlcpy(pdata.entity_name, vimc->pipe_cfg->ents[i].name,
+               strscpy(pdata.entity_name, vimc->pipe_cfg->ents[i].name,
                        sizeof(pdata.entity_name));
 
                vimc->subdevs[i] = platform_device_register_data(&vimc->pdev.dev,
        vimc->v4l2_dev.mdev = &vimc->mdev;
 
        /* Initialize media device */
-       strlcpy(vimc->mdev.model, VIMC_MDEV_MODEL_NAME,
+       strscpy(vimc->mdev.model, VIMC_MDEV_MODEL_NAME,
                sizeof(vimc->mdev.model));
        vimc->mdev.dev = &pdev->dev;
        media_device_init(&vimc->mdev);
 
 {
        dprintk(dev, 1, "vivid_fb_get_fix\n");
        memset(fix, 0, sizeof(struct fb_fix_screeninfo));
-       strlcpy(fix->id, "vioverlay fb", sizeof(fix->id));
+       strscpy(fix->id, "vioverlay fb", sizeof(fix->id));
        fix->smem_start = dev->video_pbase;
        fix->smem_len = dev->video_buffer_size;
        fix->type = FB_TYPE_PACKED_PIXELS;
 
                rds->ta = dev->radio_tx_rds_ta->cur.val;
                rds->tp = dev->radio_tx_rds_tp->cur.val;
                rds->ms = dev->radio_tx_rds_ms->cur.val;
-               strlcpy(rds->psname,
+               strscpy(rds->psname,
                        dev->radio_tx_rds_psname->p_cur.p_char,
                        sizeof(rds->psname));
-               strlcpy(rds->radiotext,
+               strscpy(rds->radiotext,
                        dev->radio_tx_rds_radiotext->p_cur.p_char + alt * 64,
                        sizeof(rds->radiotext));
                v4l2_ctrl_unlock(dev->radio_tx_rds_pi);
 
        if (vt->index > 0)
                return -EINVAL;
 
-       strlcpy(vt->name, "AM/FM/SW Receiver", sizeof(vt->name));
+       strscpy(vt->name, "AM/FM/SW Receiver", sizeof(vt->name));
        vt->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO |
                         V4L2_TUNER_CAP_FREQ_BANDS | V4L2_TUNER_CAP_RDS |
                         (dev->radio_rx_rds_controls ?
 
        if (a->index > 0)
                return -EINVAL;
 
-       strlcpy(a->name, "AM/FM/SW Transmitter", sizeof(a->name));
+       strscpy(a->name, "AM/FM/SW Transmitter", sizeof(a->name));
        a->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO |
                        V4L2_TUNER_CAP_FREQ_BANDS | V4L2_TUNER_CAP_RDS |
                        (dev->radio_tx_rds_controls ?
 
        snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d",
                 freq / 16, ((freq & 0xf) * 10) / 16);
        if (alt)
-               strlcpy(rds->radiotext,
+               strscpy(rds->radiotext,
                        " The Radio Data System can switch between different Radio Texts ",
                        sizeof(rds->radiotext));
        else
-               strlcpy(rds->radiotext,
+               strscpy(rds->radiotext,
                        "An example of Radio Text as transmitted by the Radio Data System",
                        sizeof(rds->radiotext));
 }
 
 {
        switch (vt->index) {
        case 0:
-               strlcpy(vt->name, "ADC", sizeof(vt->name));
+               strscpy(vt->name, "ADC", sizeof(vt->name));
                vt->type = V4L2_TUNER_ADC;
                vt->capability =
                        V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                vt->rangehigh = bands_adc[2].rangehigh;
                return 0;
        case 1:
-               strlcpy(vt->name, "RF", sizeof(vt->name));
+               strscpy(vt->name, "RF", sizeof(vt->name));
                vt->type = V4L2_TUNER_RF;
                vt->capability =
                        V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
 
                        break;
                }
        }
-       strlcpy(vt->name, "TV Tuner", sizeof(vt->name));
+       strscpy(vt->name, "TV Tuner", sizeof(vt->name));
        return 0;
 }
 
 
 
        mdev->dev = vsp1->dev;
        mdev->hw_revision = vsp1->version;
-       strlcpy(mdev->model, vsp1->info->model, sizeof(mdev->model));
+       strscpy(mdev->model, vsp1->info->model, sizeof(mdev->model));
        snprintf(mdev->bus_info, sizeof(mdev->bus_info), "platform:%s",
                 dev_name(mdev->dev));
        media_device_init(mdev);
 
        cap->device_caps = V4L2_CAP_META_CAPTURE
                         | V4L2_CAP_STREAMING;
 
-       strlcpy(cap->driver, "vsp1", sizeof(cap->driver));
-       strlcpy(cap->card, histo->video.name, sizeof(cap->card));
+       strscpy(cap->driver, "vsp1", sizeof(cap->driver));
+       strscpy(cap->card, histo->video.name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(histo->entity.vsp1->dev));
 
 
                cap->device_caps = V4L2_CAP_VIDEO_OUTPUT_MPLANE
                                 | V4L2_CAP_STREAMING;
 
-       strlcpy(cap->driver, "vsp1", sizeof(cap->driver));
-       strlcpy(cap->card, video->video.name, sizeof(cap->card));
+       strscpy(cap->driver, "vsp1", sizeof(cap->driver));
+       strscpy(cap->card, video->video.name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(video->vsp1->dev));
 
 
        cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS
                          | dma->xdev->v4l2_caps;
 
-       strlcpy(cap->driver, "xilinx-vipp", sizeof(cap->driver));
-       strlcpy(cap->card, dma->video.name, sizeof(cap->card));
+       strscpy(cap->driver, "xilinx-vipp", sizeof(cap->driver));
+       strscpy(cap->card, dma->video.name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s:%u",
                 dma->xdev->dev->of_node->name, dma->port);
 
                return -EINVAL;
 
        f->pixelformat = dma->format.pixelformat;
-       strlcpy(f->description, dma->fmtinfo->description,
+       strscpy(f->description, dma->fmtinfo->description,
                sizeof(f->description));
 
        return 0;
 
        v4l2_subdev_init(subdev, &xtpg_ops);
        subdev->dev = &pdev->dev;
        subdev->internal_ops = &xtpg_internal_ops;
-       strlcpy(subdev->name, dev_name(&pdev->dev), sizeof(subdev->name));
+       strscpy(subdev->name, dev_name(&pdev->dev), sizeof(subdev->name));
        v4l2_set_subdevdata(subdev, xtpg);
        subdev->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
        subdev->entity.ops = &xtpg_media_ops;
 
        int ret;
 
        xdev->media_dev.dev = xdev->dev;
-       strlcpy(xdev->media_dev.model, "Xilinx Video Composite Device",
+       strscpy(xdev->media_dev.model, "Xilinx Video Composite Device",
                sizeof(xdev->media_dev.model));
        xdev->media_dev.hw_revision = 0;
 
 
 {
        struct dsbr100_device *radio = video_drvdata(file);
 
-       strlcpy(v->driver, "dsbr100", sizeof(v->driver));
-       strlcpy(v->card, "D-Link R-100 USB FM Radio", sizeof(v->card));
+       strscpy(v->driver, "dsbr100", sizeof(v->driver));
+       strscpy(v->card, "D-Link R-100 USB FM Radio", sizeof(v->card));
        usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
                goto err_reg_ctrl;
        }
        mutex_init(&radio->v4l2_lock);
-       strlcpy(radio->videodev.name, v4l2_dev->name, sizeof(radio->videodev.name));
+       strscpy(radio->videodev.name, v4l2_dev->name,
+               sizeof(radio->videodev.name));
        radio->videodev.v4l2_dev = v4l2_dev;
        radio->videodev.fops = &usb_dsbr100_fops;
        radio->videodev.ioctl_ops = &usb_dsbr100_ioctl_ops;
 
 static int vidioc_querycap(struct file *file, void *priv,
                                struct v4l2_capability *v)
 {
-       strlcpy(v->driver, "ADS Cadet", sizeof(v->driver));
-       strlcpy(v->card, "ADS Cadet", sizeof(v->card));
-       strlcpy(v->bus_info, "ISA:radio-cadet", sizeof(v->bus_info));
+       strscpy(v->driver, "ADS Cadet", sizeof(v->driver));
+       strscpy(v->card, "ADS Cadet", sizeof(v->card));
+       strscpy(v->bus_info, "ISA:radio-cadet", sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO |
                          V4L2_CAP_READWRITE | V4L2_CAP_RDS_CAPTURE;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
        if (v->index)
                return -EINVAL;
        v->type = V4L2_TUNER_RADIO;
-       strlcpy(v->name, "Radio", sizeof(v->name));
+       strscpy(v->name, "Radio", sizeof(v->name));
        v->capability = bands[0].capability | bands[1].capability;
        v->rangelow = bands[0].rangelow;           /* 520 kHz (start of AM band) */
        v->rangehigh = bands[1].rangehigh;    /* 108.0 MHz (end of FM band) */
        struct v4l2_ctrl_handler *hdl;
        int res = -ENODEV;
 
-       strlcpy(v4l2_dev->name, "cadet", sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, "cadet", sizeof(v4l2_dev->name));
        mutex_init(&dev->lock);
 
        /* If a probe was requested then probe ISAPnP first (safest) */
        dev->is_fm_band = true;
        dev->curfreq = bands[dev->is_fm_band].rangelow;
        cadet_setfreq(dev, dev->curfreq);
-       strlcpy(dev->vdev.name, v4l2_dev->name, sizeof(dev->vdev.name));
+       strscpy(dev->vdev.name, v4l2_dev->name, sizeof(dev->vdev.name));
        dev->vdev.v4l2_dev = v4l2_dev;
        dev->vdev.fops = &cadet_fops;
        dev->vdev.ioctl_ops = &cadet_ioctl_ops;
 
 {
        struct radio_isa_card *isa = video_drvdata(file);
 
-       strlcpy(v->driver, isa->drv->driver.driver.name, sizeof(v->driver));
-       strlcpy(v->card, isa->drv->card, sizeof(v->card));
+       strscpy(v->driver, isa->drv->driver.driver.name, sizeof(v->driver));
+       strscpy(v->card, isa->drv->card, sizeof(v->card));
        snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", isa->v4l2_dev.name);
 
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        if (v->index > 0)
                return -EINVAL;
 
-       strlcpy(v->name, "FM", sizeof(v->name));
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = FREQ_LOW;
        v->rangehigh = FREQ_HIGH;
        dev_set_drvdata(pdev, isa);
        isa->drv = drv;
        v4l2_dev = &isa->v4l2_dev;
-       strlcpy(v4l2_dev->name, dev_name(pdev), sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, dev_name(pdev), sizeof(v4l2_dev->name));
 
        return isa;
 }
 
        mutex_init(&isa->lock);
        isa->vdev.lock = &isa->lock;
-       strlcpy(isa->vdev.name, v4l2_dev->name, sizeof(isa->vdev.name));
+       strscpy(isa->vdev.name, v4l2_dev->name, sizeof(isa->vdev.name));
        isa->vdev.v4l2_dev = v4l2_dev;
        isa->vdev.fops = &radio_isa_fops;
        isa->vdev.ioctl_ops = &radio_isa_ioctl_ops;
 
 {
        struct keene_device *radio = video_drvdata(file);
 
-       strlcpy(v->driver, "radio-keene", sizeof(v->driver));
-       strlcpy(v->card, "Keene FM Transmitter", sizeof(v->card));
+       strscpy(v->driver, "radio-keene", sizeof(v->driver));
+       strscpy(v->card, "Keene FM Transmitter", sizeof(v->card));
        usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_RADIO | V4L2_CAP_MODULATOR;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
        if (v->index > 0)
                return -EINVAL;
 
-       strlcpy(v->name, "FM", sizeof(v->name));
+       strscpy(v->name, "FM", sizeof(v->name));
        v->rangelow = FREQ_MIN * FREQ_MUL;
        v->rangehigh = FREQ_MAX * FREQ_MUL;
        v->txsubchans = radio->stereo ? V4L2_TUNER_SUB_STEREO : V4L2_TUNER_SUB_MONO;
 
        radio->v4l2_dev.ctrl_handler = hdl;
        radio->v4l2_dev.release = usb_keene_video_device_release;
-       strlcpy(radio->vdev.name, radio->v4l2_dev.name,
+       strscpy(radio->vdev.name, radio->v4l2_dev.name,
                sizeof(radio->vdev.name));
        radio->vdev.v4l2_dev = &radio->v4l2_dev;
        radio->vdev.fops = &usb_keene_fops;
 
 {
        struct ma901radio_device *radio = video_drvdata(file);
 
-       strlcpy(v->driver, "radio-ma901", sizeof(v->driver));
-       strlcpy(v->card, "Masterkit MA901 USB FM Radio", sizeof(v->card));
+       strscpy(v->driver, "radio-ma901", sizeof(v->driver));
+       strscpy(v->card, "Masterkit MA901 USB FM Radio", sizeof(v->card));
        usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
 
        radio->v4l2_dev.ctrl_handler = &radio->hdl;
        radio->v4l2_dev.release = usb_ma901radio_release;
-       strlcpy(radio->vdev.name, radio->v4l2_dev.name,
+       strscpy(radio->vdev.name, radio->v4l2_dev.name,
                sizeof(radio->vdev.name));
        radio->vdev.v4l2_dev = &radio->v4l2_dev;
        radio->vdev.fops = &usb_ma901radio_fops;
 
        dev->tea.cannot_read_data = true;
        dev->tea.v4l2_dev = v4l2_dev;
        dev->tea.radio_nr = radio_nr;
-       strlcpy(dev->tea.card, "Maxi Radio FM2000", sizeof(dev->tea.card));
+       strscpy(dev->tea.card, "Maxi Radio FM2000", sizeof(dev->tea.card));
        snprintf(dev->tea.bus_info, sizeof(dev->tea.bus_info),
                        "PCI:%s", pci_name(pdev));
 
 
 {
        struct pcm20 *dev = video_drvdata(file);
 
-       strlcpy(v->driver, "Miro PCM20", sizeof(v->driver));
-       strlcpy(v->card, "Miro PCM20", sizeof(v->card));
+       strscpy(v->driver, "Miro PCM20", sizeof(v->driver));
+       strscpy(v->card, "Miro PCM20", sizeof(v->card));
        snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", dev->v4l2_dev.name);
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO | V4L2_CAP_RDS_CAPTURE;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
 
        if (v->index)
                return -EINVAL;
-       strlcpy(v->name, "FM", sizeof(v->name));
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = 87*16000;
        v->rangehigh = 108*16000;
                         "you must load the snd-miro driver first!\n");
                return -ENODEV;
        }
-       strlcpy(v4l2_dev->name, "radio-miropcm20", sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, "radio-miropcm20", sizeof(v4l2_dev->name));
        mutex_init(&dev->lock);
 
        res = v4l2_device_register(NULL, v4l2_dev);
                v4l2_err(v4l2_dev, "Could not register control\n");
                goto err_hdl;
        }
-       strlcpy(dev->vdev.name, v4l2_dev->name, sizeof(dev->vdev.name));
+       strscpy(dev->vdev.name, v4l2_dev->name, sizeof(dev->vdev.name));
        dev->vdev.v4l2_dev = v4l2_dev;
        dev->vdev.fops = &pcm20_fops;
        dev->vdev.ioctl_ops = &pcm20_ioctl_ops;
 
 {
        struct amradio_device *radio = video_drvdata(file);
 
-       strlcpy(v->driver, "radio-mr800", sizeof(v->driver));
-       strlcpy(v->card, "AverMedia MR 800 USB FM Radio", sizeof(v->card));
+       strscpy(v->driver, "radio-mr800", sizeof(v->driver));
+       strscpy(v->card, "AverMedia MR 800 USB FM Radio", sizeof(v->card));
        usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER |
                                        V4L2_CAP_HW_FREQ_SEEK;
 
        radio->v4l2_dev.ctrl_handler = &radio->hdl;
        radio->v4l2_dev.release = usb_amradio_release;
-       strlcpy(radio->vdev.name, radio->v4l2_dev.name,
+       strscpy(radio->vdev.name, radio->v4l2_dev.name,
                sizeof(radio->vdev.name));
        radio->vdev.v4l2_dev = &radio->v4l2_dev;
        radio->vdev.fops = &usb_amradio_fops;
 
 {
        struct raremono_device *radio = video_drvdata(file);
 
-       strlcpy(v->driver, "radio-raremono", sizeof(v->driver));
-       strlcpy(v->card, "Thanko's Raremono", sizeof(v->card));
+       strscpy(v->driver, "radio-raremono", sizeof(v->driver));
+       strscpy(v->card, "Thanko's Raremono", sizeof(v->card));
        usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
        if (v->index > 0)
                return -EINVAL;
 
-       strlcpy(v->name, "AM/FM/SW", sizeof(v->name));
+       strscpy(v->name, "AM/FM/SW", sizeof(v->name));
        v->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO |
                V4L2_TUNER_CAP_FREQ_BANDS;
        v->rangelow = AM_FREQ_RANGE_LOW * 16;
 
        mutex_init(&radio->lock);
 
-       strlcpy(radio->vdev.name, radio->v4l2_dev.name,
+       strscpy(radio->vdev.name, radio->v4l2_dev.name,
                sizeof(radio->vdev.name));
        radio->vdev.v4l2_dev = &radio->v4l2_dev;
        radio->vdev.fops = &usb_raremono_fops;
 
 static int vidioc_querycap(struct file *file, void  *priv,
                                        struct v4l2_capability *v)
 {
-       strlcpy(v->driver, "radio-sf16fmi", sizeof(v->driver));
-       strlcpy(v->card, "SF16-FMI/FMP/FMD radio", sizeof(v->card));
-       strlcpy(v->bus_info, "ISA:radio-sf16fmi", sizeof(v->bus_info));
+       strscpy(v->driver, "radio-sf16fmi", sizeof(v->driver));
+       strscpy(v->card, "SF16-FMI/FMP/FMD radio", sizeof(v->card));
+       strscpy(v->bus_info, "ISA:radio-sf16fmi", sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
        if (v->index > 0)
                return -EINVAL;
 
-       strlcpy(v->name, "FM", sizeof(v->name));
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = RSF16_MINFREQ;
        v->rangehigh = RSF16_MAXFREQ;
                return -ENODEV;
        }
 
-       strlcpy(v4l2_dev->name, "sf16fmi", sizeof(v4l2_dev->name));
+       strscpy(v4l2_dev->name, "sf16fmi", sizeof(v4l2_dev->name));
        fmi->io = io;
 
        res = v4l2_device_register(NULL, v4l2_dev);
                return res;
        }
 
-       strlcpy(fmi->vdev.name, v4l2_dev->name, sizeof(fmi->vdev.name));
+       strscpy(fmi->vdev.name, v4l2_dev->name, sizeof(fmi->vdev.name));
        fmi->vdev.v4l2_dev = v4l2_dev;
        fmi->vdev.fops = &fmi_fops;
        fmi->vdev.ioctl_ops = &fmi_ioctl_ops;
 
                if (io == fmr2_cards[i]->io)
                        return -EBUSY;
 
-       strlcpy(fmr2->v4l2_dev.name, "radio-sf16fmr2",
-                       sizeof(fmr2->v4l2_dev.name)),
+       strscpy(fmr2->v4l2_dev.name, "radio-sf16fmr2",
+               sizeof(fmr2->v4l2_dev.name)),
        fmr2->io = io;
 
        if (!request_region(fmr2->io, 2, fmr2->v4l2_dev.name)) {
        fmr2->tea.radio_nr = radio_nr[num_fmr2_cards];
        fmr2->tea.ops = &fmr2_tea_ops;
        fmr2->tea.ext_init = fmr2_tea_ext_init;
-       strlcpy(fmr2->tea.card, card_name, sizeof(fmr2->tea.card));
+       strscpy(fmr2->tea.card, card_name, sizeof(fmr2->tea.card));
        snprintf(fmr2->tea.bus_info, sizeof(fmr2->tea.bus_info), "%s:%s",
                        fmr2->is_fmd2 ? "PnP" : "ISA", dev_name(pdev));
 
 
        shark->tea.ops = &shark_tea_ops;
        shark->tea.cannot_mute = true;
        shark->tea.has_am = true;
-       strlcpy(shark->tea.card, "Griffin radioSHARK",
+       strscpy(shark->tea.card, "Griffin radioSHARK",
                sizeof(shark->tea.card));
        usb_make_path(shark->usbdev, shark->tea.bus_info,
                sizeof(shark->tea.bus_info));
 
        shark->tea.ops = &shark_tea_ops;
        shark->tea.has_am = true;
        shark->tea.write_before_read = true;
-       strlcpy(shark->tea.card, "Griffin radioSHARK2",
+       strscpy(shark->tea.card, "Griffin radioSHARK2",
                sizeof(shark->tea.card));
        usb_make_path(shark->usbdev, shark->tea.bus_info,
                sizeof(shark->tea.bus_info));
 
 {
        struct si476x_radio *radio = video_drvdata(file);
 
-       strlcpy(capability->driver, radio->v4l2dev.name,
+       strscpy(capability->driver, radio->v4l2dev.name,
                sizeof(capability->driver));
-       strlcpy(capability->card,   DRIVER_CARD, sizeof(capability->card));
+       strscpy(capability->card,   DRIVER_CARD, sizeof(capability->card));
        snprintf(capability->bus_info, sizeof(capability->bus_info),
                 "platform:%s", radio->v4l2dev.name);
 
        si476x_core_lock(radio->core);
 
        if (si476x_core_is_a_secondary_tuner(radio->core)) {
-               strlcpy(tuner->name, "FM (secondary)", sizeof(tuner->name));
+               strscpy(tuner->name, "FM (secondary)", sizeof(tuner->name));
                tuner->rxsubchans = 0;
                tuner->rangelow = si476x_bands[SI476X_BAND_FM].rangelow;
        } else if (si476x_core_has_am(radio->core)) {
                if (si476x_core_is_a_primary_tuner(radio->core))
-                       strlcpy(tuner->name, "AM/FM (primary)",
+                       strscpy(tuner->name, "AM/FM (primary)",
                                sizeof(tuner->name));
                else
-                       strlcpy(tuner->name, "AM/FM", sizeof(tuner->name));
+                       strscpy(tuner->name, "AM/FM", sizeof(tuner->name));
 
                tuner->rxsubchans = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO
                        | V4L2_TUNER_SUB_RDS;
 
                tuner->rangelow = si476x_bands[SI476X_BAND_AM].rangelow;
        } else {
-               strlcpy(tuner->name, "FM", sizeof(tuner->name));
+               strscpy(tuner->name, "FM", sizeof(tuner->name));
                tuner->rxsubchans = V4L2_TUNER_SUB_RDS;
                tuner->capability |= V4L2_TUNER_CAP_RDS
                        | V4L2_TUNER_CAP_RDS_BLOCK_IO
 
        struct tea5764_device *radio = video_drvdata(file);
        struct video_device *dev = &radio->vdev;
 
-       strlcpy(v->driver, dev->dev.driver->name, sizeof(v->driver));
-       strlcpy(v->card, dev->name, sizeof(v->card));
+       strscpy(v->driver, dev->dev.driver->name, sizeof(v->driver));
+       strscpy(v->card, dev->name, sizeof(v->card));
        snprintf(v->bus_info, sizeof(v->bus_info),
                 "I2C:%s", dev_name(&dev->dev));
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        if (v->index > 0)
                return -EINVAL;
 
-       strlcpy(v->name, "FM", sizeof(v->name));
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        tea5764_i2c_read(radio);
        v->rangelow   = FREQ_MIN * FREQ_MUL;
 
 {
        struct radio_tea5777 *tea = video_drvdata(file);
 
-       strlcpy(v->driver, tea->v4l2_dev->name, sizeof(v->driver));
-       strlcpy(v->card, tea->card, sizeof(v->card));
+       strscpy(v->driver, tea->v4l2_dev->name, sizeof(v->driver));
+       strscpy(v->card, tea->card, sizeof(v->card));
        strlcat(v->card, " TEA5777", sizeof(v->card));
-       strlcpy(v->bus_info, tea->bus_info, sizeof(v->bus_info));
+       strscpy(v->bus_info, tea->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        v->device_caps |= V4L2_CAP_HW_FREQ_SEEK;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
 
        memset(v, 0, sizeof(*v));
        if (tea->has_am)
-               strlcpy(v->name, "AM/FM", sizeof(v->name));
+               strscpy(v->name, "AM/FM", sizeof(v->name));
        else
-               strlcpy(v->name, "FM", sizeof(v->name));
+               strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->capability = V4L2_TUNER_CAP_LOW | V4L2_TUNER_CAP_STEREO |
                        V4L2_TUNER_CAP_FREQ_BANDS |
        tea->vd = tea575x_radio;
        video_set_drvdata(&tea->vd, tea);
        mutex_init(&tea->mutex);
-       strlcpy(tea->vd.name, tea->v4l2_dev->name, sizeof(tea->vd.name));
+       strscpy(tea->vd.name, tea->v4l2_dev->name, sizeof(tea->vd.name));
        tea->vd.lock = &tea->mutex;
        tea->vd.v4l2_dev = tea->v4l2_dev;
        tea->fops = tea575x_fops;
 
 static int timbradio_vidioc_querycap(struct file *file, void  *priv,
        struct v4l2_capability *v)
 {
-       strlcpy(v->driver, DRIVER_NAME, sizeof(v->driver));
-       strlcpy(v->card, "Timberdale Radio", sizeof(v->card));
+       strscpy(v->driver, DRIVER_NAME, sizeof(v->driver));
+       strscpy(v->card, "Timberdale Radio", sizeof(v->card));
        snprintf(v->bus_info, sizeof(v->bus_info), "platform:"DRIVER_NAME);
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
        tr->pdata = *pdata;
        mutex_init(&tr->lock);
 
-       strlcpy(tr->video_dev.name, "Timberdale Radio",
+       strscpy(tr->video_dev.name, "Timberdale Radio",
                sizeof(tr->video_dev.name));
        tr->video_dev.fops = &timbradio_fops;
        tr->video_dev.ioctl_ops = &timbradio_ioctl_ops;
        tr->video_dev.minor = -1;
        tr->video_dev.lock = &tr->lock;
 
-       strlcpy(tr->v4l2_dev.name, DRIVER_NAME, sizeof(tr->v4l2_dev.name));
+       strscpy(tr->v4l2_dev.name, DRIVER_NAME, sizeof(tr->v4l2_dev.name));
        err = v4l2_device_register(NULL, &tr->v4l2_dev);
        if (err)
                goto err;
 
 
        dev_dbg(radio->dev, "%s\n", __func__);
 
-       strlcpy(capability->driver, WL1273_FM_DRIVER_NAME,
+       strscpy(capability->driver, WL1273_FM_DRIVER_NAME,
                sizeof(capability->driver));
-       strlcpy(capability->card, "Texas Instruments Wl1273 FM Radio",
+       strscpy(capability->card, "Texas Instruments Wl1273 FM Radio",
                sizeof(capability->card));
-       strlcpy(capability->bus_info, radio->bus_type,
+       strscpy(capability->bus_info, radio->bus_type,
                sizeof(capability->bus_info));
 
        capability->device_caps = V4L2_CAP_HW_FREQ_SEEK |
        if (audio->index > 1)
                return -EINVAL;
 
-       strlcpy(audio->name, "Radio", sizeof(audio->name));
+       strscpy(audio->name, "Radio", sizeof(audio->name));
        audio->capability = V4L2_AUDCAP_STEREO;
 
        return 0;
        if (tuner->index > 0)
                return -EINVAL;
 
-       strlcpy(tuner->name, WL1273_FM_DRIVER_NAME, sizeof(tuner->name));
+       strscpy(tuner->name, WL1273_FM_DRIVER_NAME, sizeof(tuner->name));
        tuner->type = V4L2_TUNER_RADIO;
 
        tuner->rangelow = WL1273_FREQ(WL1273_BAND_JAPAN_LOW);
 
        dev_dbg(radio->dev, "%s\n", __func__);
 
-       strlcpy(modulator->name, WL1273_FM_DRIVER_NAME,
+       strscpy(modulator->name, WL1273_FM_DRIVER_NAME,
                sizeof(modulator->name));
 
        modulator->rangelow = WL1273_FREQ(WL1273_BAND_JAPAN_LOW);
 
 static int si470x_vidioc_querycap(struct file *file, void *priv,
                                  struct v4l2_capability *capability)
 {
-       strlcpy(capability->driver, DRIVER_NAME, sizeof(capability->driver));
-       strlcpy(capability->card, DRIVER_CARD, sizeof(capability->card));
+       strscpy(capability->driver, DRIVER_NAME, sizeof(capability->driver));
+       strscpy(capability->card, DRIVER_CARD, sizeof(capability->card));
        capability->device_caps = V4L2_CAP_HW_FREQ_SEEK | V4L2_CAP_READWRITE |
                V4L2_CAP_TUNER | V4L2_CAP_RADIO | V4L2_CAP_RDS_CAPTURE;
        capability->capabilities = capability->device_caps | V4L2_CAP_DEVICE_CAPS;
 
 {
        struct si470x_device *radio = video_drvdata(file);
 
-       strlcpy(capability->driver, DRIVER_NAME, sizeof(capability->driver));
-       strlcpy(capability->card, DRIVER_CARD, sizeof(capability->card));
+       strscpy(capability->driver, DRIVER_NAME, sizeof(capability->driver));
+       strscpy(capability->card, DRIVER_CARD, sizeof(capability->card));
        usb_make_path(radio->usbdev, capability->bus_info,
                        sizeof(capability->bus_info));
        capability->device_caps = V4L2_CAP_HW_FREQ_SEEK | V4L2_CAP_READWRITE |
 
 static int radio_si4713_querycap(struct file *file, void *priv,
                                        struct v4l2_capability *capability)
 {
-       strlcpy(capability->driver, "radio-si4713", sizeof(capability->driver));
-       strlcpy(capability->card, "Silicon Labs Si4713 Modulator",
+       strscpy(capability->driver, "radio-si4713", sizeof(capability->driver));
+       strscpy(capability->card, "Silicon Labs Si4713 Modulator",
                sizeof(capability->card));
-       strlcpy(capability->bus_info, "platform:radio-si4713",
+       strscpy(capability->bus_info, "platform:radio-si4713",
                sizeof(capability->bus_info));
        capability->device_caps = V4L2_CAP_MODULATOR | V4L2_CAP_RDS_OUTPUT;
        capability->capabilities = capability->device_caps | V4L2_CAP_DEVICE_CAPS;
 
 {
        struct si4713_usb_device *radio = video_drvdata(file);
 
-       strlcpy(v->driver, "radio-usb-si4713", sizeof(v->driver));
-       strlcpy(v->card, "Si4713 FM Transmitter", sizeof(v->card));
+       strscpy(v->driver, "radio-usb-si4713", sizeof(v->driver));
+       strscpy(v->card, "Si4713 FM Transmitter", sizeof(v->card));
        usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_MODULATOR | V4L2_CAP_RDS_OUTPUT;
        v->capabilities = v->device_caps | V4L2_CAP_DEVICE_CAPS;
 
        radio->vdev.ctrl_handler = sd->ctrl_handler;
        radio->v4l2_dev.release = usb_si4713_video_device_release;
-       strlcpy(radio->vdev.name, radio->v4l2_dev.name,
+       strscpy(radio->vdev.name, radio->v4l2_dev.name,
                sizeof(radio->vdev.name));
        radio->vdev.v4l2_dev = &radio->v4l2_dev;
        radio->vdev.fops = &usb_si4713_fops;
 
 {
        struct snd_tea575x *tea = video_drvdata(file);
 
-       strlcpy(v->driver, tea->v4l2_dev->name, sizeof(v->driver));
-       strlcpy(v->card, tea->card, sizeof(v->card));
+       strscpy(v->driver, tea->v4l2_dev->name, sizeof(v->driver));
+       strscpy(v->card, tea->card, sizeof(v->card));
        strlcat(v->card, tea->tea5759 ? " TEA5759" : " TEA5757", sizeof(v->card));
-       strlcpy(v->bus_info, tea->bus_info, sizeof(v->bus_info));
+       strscpy(v->bus_info, tea->bus_info, sizeof(v->bus_info));
        v->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
        if (!tea->cannot_read_data)
                v->device_caps |= V4L2_CAP_HW_FREQ_SEEK;
        snd_tea575x_enum_freq_bands(tea, &band_fm);
 
        memset(v, 0, sizeof(*v));
-       strlcpy(v->name, tea->has_am ? "FM/AM" : "FM", sizeof(v->name));
+       strscpy(v->name, tea->has_am ? "FM/AM" : "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->capability = band_fm.capability;
        v->rangelow = tea->has_am ? bands[BAND_AM].rangelow : band_fm.rangelow;
        tea->vd = tea575x_radio;
        video_set_drvdata(&tea->vd, tea);
        mutex_init(&tea->mutex);
-       strlcpy(tea->vd.name, tea->v4l2_dev->name, sizeof(tea->vd.name));
+       strscpy(tea->vd.name, tea->v4l2_dev->name, sizeof(tea->vd.name));
        tea->vd.lock = &tea->mutex;
        tea->vd.v4l2_dev = tea->v4l2_dev;
        tea->fops = tea575x_fops;
 
                return -EINVAL;
 
        /* only support FM for now */
-       strlcpy(v->name, "FM", sizeof(v->name));
+       strscpy(v->name, "FM", sizeof(v->name));
        v->type = V4L2_TUNER_RADIO;
        v->rangelow = TEF6862_LO_FREQ;
        v->rangehigh = TEF6862_HI_FREQ;
 
 static int fm_v4l2_vidioc_querycap(struct file *file, void *priv,
                struct v4l2_capability *capability)
 {
-       strlcpy(capability->driver, FM_DRV_NAME, sizeof(capability->driver));
-       strlcpy(capability->card, FM_DRV_CARD_SHORT_NAME,
-                       sizeof(capability->card));
+       strscpy(capability->driver, FM_DRV_NAME, sizeof(capability->driver));
+       strscpy(capability->card, FM_DRV_CARD_SHORT_NAME,
+               sizeof(capability->card));
        sprintf(capability->bus_info, "UART");
        capability->device_caps = V4L2_CAP_HW_FREQ_SEEK | V4L2_CAP_TUNER |
                V4L2_CAP_RADIO | V4L2_CAP_MODULATOR |
        struct v4l2_ctrl *ctrl;
        int ret;
 
-       strlcpy(fmdev->v4l2_dev.name, FM_DRV_NAME, sizeof(fmdev->v4l2_dev.name));
+       strscpy(fmdev->v4l2_dev.name, FM_DRV_NAME,
+               sizeof(fmdev->v4l2_dev.name));
        ret = v4l2_device_register(NULL, &fmdev->v4l2_dev);
        if (ret < 0)
                return ret;
 
        ati_remote->interface = interface;
 
        usb_make_path(udev, ati_remote->rc_phys, sizeof(ati_remote->rc_phys));
-       strlcpy(ati_remote->mouse_phys, ati_remote->rc_phys,
+       strscpy(ati_remote->mouse_phys, ati_remote->rc_phys,
                sizeof(ati_remote->mouse_phys));
 
        strlcat(ati_remote->rc_phys, "/input0", sizeof(ati_remote->rc_phys));
 
        if (dev->descriptor.iManufacturer
            && usb_string(dev, dev->descriptor.iManufacturer,
                          buf, sizeof(buf)) > 0)
-               strlcpy(name, buf, sizeof(name));
+               strscpy(name, buf, sizeof(name));
        if (dev->descriptor.iProduct
            && usb_string(dev, dev->descriptor.iProduct,
                          buf, sizeof(buf)) > 0)
 
        if (usbdev->descriptor.iManufacturer
            && usb_string(usbdev, usbdev->descriptor.iManufacturer,
                          buf, sizeof(buf)) > 0)
-               strlcpy(name, buf, sizeof(name));
+               strscpy(name, buf, sizeof(name));
 
        if (usbdev->descriptor.iProduct
            && usb_string(usbdev, usbdev->descriptor.iProduct,
 
 
        dev_dbg(&client->dev, "index=%d\n", v->index);
 
-       strlcpy(v->name, "Elonics E4000", sizeof(v->name));
+       strscpy(v->name, "Elonics E4000", sizeof(v->name));
        v->type = V4L2_TUNER_RF;
        v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
        v->rangelow  = bands[0].rangelow;
 
 
        dev_dbg(&client->dev, "index=%d\n", v->index);
 
-       strlcpy(v->name, "FCI FC2580", sizeof(v->name));
+       strscpy(v->name, "FCI FC2580", sizeof(v->name));
        v->type = V4L2_TUNER_RF;
        v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
        v->rangelow  = bands[0].rangelow;
 
 
        dev_dbg(&spi->dev, "index=%d\n", v->index);
 
-       strlcpy(v->name, "Mirics MSi001", sizeof(v->name));
+       strscpy(v->name, "Mirics MSi001", sizeof(v->name));
        v->type = V4L2_TUNER_RF;
        v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
        v->rangelow =    49000000;
 
                return NULL;
        }
 
-       strlcpy(fe->ops.tuner_ops.info.name, name,
+       strscpy(fe->ops.tuner_ops.info.name, name,
                sizeof(fe->ops.tuner_ops.info.name));
        tuner_info("microtune %s found, OK\n",name);
        return fe;
 
                                   priv->nr, dtv_input[priv->nr]);
        }
 
-       strlcpy(fe->ops.tuner_ops.info.name, priv->tun->name,
+       strscpy(fe->ops.tuner_ops.info.name, priv->tun->name,
                sizeof(fe->ops.tuner_ops.info.name));
 
        return fe;
 
 {
        struct airspy *s = video_drvdata(file);
 
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, s->vdev.name, sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, s->vdev.name, sizeof(cap->card));
        usb_make_path(s->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
                        V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
        if (f->index >= NUM_FORMATS)
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name, sizeof(f->description));
+       strscpy(f->description, formats[f->index].name, sizeof(f->description));
        f->pixelformat = formats[f->index].pixelformat;
 
        return 0;
        int ret;
 
        if (v->index == 0) {
-               strlcpy(v->name, "AirSpy ADC", sizeof(v->name));
+               strscpy(v->name, "AirSpy ADC", sizeof(v->name));
                v->type = V4L2_TUNER_ADC;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow  = bands[0].rangelow;
                v->rangehigh = bands[0].rangehigh;
                ret = 0;
        } else if (v->index == 1) {
-               strlcpy(v->name, "AirSpy RF", sizeof(v->name));
+               strscpy(v->name, "AirSpy RF", sizeof(v->name));
                v->type = V4L2_TUNER_RF;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow  = bands_rf[0].rangelow;
 
 
        dev->i2c_adap.dev.parent = &dev->usbdev->dev;
 
-       strlcpy(dev->i2c_adap.name, KBUILD_MODNAME,
+       strscpy(dev->i2c_adap.name, KBUILD_MODNAME,
                sizeof(dev->i2c_adap.name));
 
        dev->i2c_adap.algo = &dev->i2c_algo;
 
        dprintk(1, "%s called std_set %d dev_state %ld\n", __func__,
                dev->std_set_in_tuner_core, dev->dev_state);
 
-       strlcpy(cap->driver, "au0828", sizeof(cap->driver));
-       strlcpy(cap->card, dev->board.name, sizeof(cap->card));
+       strscpy(cap->driver, "au0828", sizeof(cap->driver));
+       strscpy(cap->card, dev->board.name, sizeof(cap->card));
        usb_make_path(dev->usbdev, cap->bus_info, sizeof(cap->bus_info));
 
        /* set the device capabilities */
 
        if (f->index != 0)
                return -EINVAL;
 
-       strlcpy(f->description, "MPEG", sizeof(f->description));
+       strscpy(f->description, "MPEG", sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_MPEG;
 
        return 0;
 
 
        dev->init_data.name = cx231xx_boards[dev->model].name;
 
-       strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+       strscpy(info.type, "ir_video", I2C_NAME_SIZE);
        info.platform_data = &dev->init_data;
 
        /*
 
        case 0: /* Cx231xx - internal registers */
                return 0;
        case 1: /* AFE - read byte */
-               strlcpy(chip->name, "AFE (byte)", sizeof(chip->name));
+               strscpy(chip->name, "AFE (byte)", sizeof(chip->name));
                return 0;
        case 2: /* Video Block - read byte */
-               strlcpy(chip->name, "Video (byte)", sizeof(chip->name));
+               strscpy(chip->name, "Video (byte)", sizeof(chip->name));
                return 0;
        case 3: /* I2S block - read byte */
-               strlcpy(chip->name, "I2S (byte)", sizeof(chip->name));
+               strscpy(chip->name, "I2S (byte)", sizeof(chip->name));
                return 0;
        case 4: /* AFE - read dword */
-               strlcpy(chip->name, "AFE (dword)", sizeof(chip->name));
+               strscpy(chip->name, "AFE (dword)", sizeof(chip->name));
                return 0;
        case 5: /* Video Block - read dword */
-               strlcpy(chip->name, "Video (dword)", sizeof(chip->name));
+               strscpy(chip->name, "Video (dword)", sizeof(chip->name));
                return 0;
        case 6: /* I2S Block - read dword */
-               strlcpy(chip->name, "I2S (dword)", sizeof(chip->name));
+               strscpy(chip->name, "I2S (dword)", sizeof(chip->name));
                return 0;
        }
        return -EINVAL;
        struct cx231xx_fh *fh = priv;
        struct cx231xx *dev = fh->dev;
 
-       strlcpy(cap->driver, "cx231xx", sizeof(cap->driver));
-       strlcpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
+       strscpy(cap->driver, "cx231xx", sizeof(cap->driver));
+       strscpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
 
        if (vdev->vfl_type == VFL_TYPE_RADIO)
        if (unlikely(f->index >= ARRAY_SIZE(format)))
                return -EINVAL;
 
-       strlcpy(f->description, format[f->index].name, sizeof(f->description));
+       strscpy(f->description, format[f->index].name, sizeof(f->description));
        f->pixelformat = format[f->index].fourcc;
 
        return 0;
 
                .platform_data = platform_data,
        };
 
-       strlcpy(board_info.type, type, I2C_NAME_SIZE);
+       strscpy(board_info.type, type, I2C_NAME_SIZE);
 
        /* find first free client */
        for (num = 0; num < AF9035_I2C_CLIENT_MAX; num++) {
 
                .platform_data = platform_data,
        };
 
-       strlcpy(board_info.type, type, I2C_NAME_SIZE);
+       strscpy(board_info.type, type, I2C_NAME_SIZE);
 
        /* find first free client */
        for (num = 0; num < ANYSEE_I2C_CLIENT_MAX; num++) {
 
        if (!d->props->i2c_algo)
                return 0;
 
-       strlcpy(d->i2c_adap.name, d->name, sizeof(d->i2c_adap.name));
+       strscpy(d->i2c_adap.name, d->name, sizeof(d->i2c_adap.name));
        d->i2c_adap.algo = d->props->i2c_algo;
        d->i2c_adap.dev.parent = &d->udev->dev;
        i2c_set_adapdata(&d->i2c_adap, d);
 
        priv->i2c_client_demod = cl;
        priv->tuner_adap.algo = &friio_tuner_i2c_algo;
        priv->tuner_adap.dev.parent = &d->udev->dev;
-       strlcpy(priv->tuner_adap.name, d->name, sizeof(priv->tuner_adap.name));
+       strscpy(priv->tuner_adap.name, d->name, sizeof(priv->tuner_adap.name));
        strlcat(priv->tuner_adap.name, "-tuner", sizeof(priv->tuner_adap.name));
        priv->demod_sub_i2c = &priv->tuner_adap;
        i2c_set_adapdata(&priv->tuner_adap, d);
 
                " SHARP:BS2F7HZ0194", " RS2000"};
        char *name = adap->fe[0]->ops.info.name;
 
-       strlcpy(name, desc, 128);
+       strscpy(name, desc, 128);
        strlcat(name, fe_name[st->tuner_config], 128);
 
        return 0;
 
 
        /* attach demodulator */
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "rtl2830", I2C_NAME_SIZE);
+       strscpy(board_info.type, "rtl2830", I2C_NAME_SIZE);
        board_info.addr = 0x10;
        board_info.platform_data = pdata;
        request_module("%s", board_info.type);
 
        /* attach demodulator */
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "rtl2832", I2C_NAME_SIZE);
+       strscpy(board_info.type, "rtl2832", I2C_NAME_SIZE);
        board_info.addr = 0x10;
        board_info.platform_data = pdata;
        request_module("%s", board_info.type);
 
                        mn88472_config.fe = &adap->fe[1];
                        mn88472_config.i2c_wr_max = 22,
-                       strlcpy(info.type, "mn88472", I2C_NAME_SIZE);
+                       strscpy(info.type, "mn88472", I2C_NAME_SIZE);
                        mn88472_config.xtal = 20500000;
                        mn88472_config.ts_mode = SERIAL_TS_MODE;
                        mn88472_config.ts_clock = VARIABLE_TS_CLOCK;
 
                        mn88473_config.fe = &adap->fe[1];
                        mn88473_config.i2c_wr_max = 22,
-                       strlcpy(info.type, "mn88473", I2C_NAME_SIZE);
+                       strscpy(info.type, "mn88473", I2C_NAME_SIZE);
                        info.addr = 0x18;
                        info.platform_data = &mn88473_config;
                        request_module(info.type);
                        si2168_config.ts_mode = SI2168_TS_SERIAL;
                        si2168_config.ts_clock_inv = false;
                        si2168_config.ts_clock_gapped = true;
-                       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2168", I2C_NAME_SIZE);
                        info.addr = 0x64;
                        info.platform_data = &si2168_config;
                        request_module(info.type);
                                .clock = 28800000,
                        };
 
-                       strlcpy(info.type, "e4000", I2C_NAME_SIZE);
+                       strscpy(info.type, "e4000", I2C_NAME_SIZE);
                        info.addr = 0x64;
                        info.platform_data = &e4000_config;
 
                        };
                        struct i2c_board_info board_info = {};
 
-                       strlcpy(board_info.type, "fc2580", I2C_NAME_SIZE);
+                       strscpy(board_info.type, "fc2580", I2C_NAME_SIZE);
                        board_info.addr = 0x56;
                        board_info.platform_data = &fc2580_pdata;
                        request_module("fc2580");
                if (ret)
                        goto err;
 
-               strlcpy(board_info.type, "tua9001", I2C_NAME_SIZE);
+               strscpy(board_info.type, "tua9001", I2C_NAME_SIZE);
                board_info.addr = 0x60;
                board_info.platform_data = &tua9001_pdata;
                request_module("tua9001");
                                .inversion = false,
                        };
 
-                       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+                       strscpy(info.type, "si2157", I2C_NAME_SIZE);
                        info.addr = 0x60;
                        info.platform_data = &si2157_config;
                        request_module(info.type);
 
        dev->mt2060_pdata.i2c_write_max = 9;
        dev->mt2060_pdata.dvb_frontend = frontend;
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "mt2060", I2C_NAME_SIZE);
+       strscpy(board_info.type, "mt2060", I2C_NAME_SIZE);
        board_info.addr = 0x60;
        board_info.platform_data = &dev->mt2060_pdata;
        request_module("%s", "mt2060");
 
        si2168_config.ts_mode = SI2168_TS_PARALLEL;
        si2168_config.ts_clock_inv = 1;
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, "si2168", I2C_NAME_SIZE);
+       strscpy(info.type, "si2168", I2C_NAME_SIZE);
        info.addr = 0x64;
        info.platform_data = &si2168_config;
        request_module(info.type);
        si2157_config.fe = adap->fe_adap[0].fe;
        si2157_config.if_port = 1;
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, "si2157", I2C_NAME_SIZE);
+       strscpy(info.type, "si2157", I2C_NAME_SIZE);
        info.addr = 0x60;
        info.platform_data = &si2157_config;
        request_module(info.type);
 
        mn88472_config.ts_mode = PARALLEL_TS_MODE;
        mn88472_config.ts_clock = FIXED_TS_CLOCK;
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, "mn88472", I2C_NAME_SIZE);
+       strscpy(info.type, "mn88472", I2C_NAME_SIZE);
        info.addr = 0x18;
        info.platform_data = &mn88472_config;
        request_module(info.type);
        tda18250_config.fe = adap->fe_adap[0].fe;
 
        memset(&info, 0, sizeof(struct i2c_board_info));
-       strlcpy(info.type, "tda18250", I2C_NAME_SIZE);
+       strscpy(info.type, "tda18250", I2C_NAME_SIZE);
        info.addr = 0x60;
        info.platform_data = &tda18250_config;
 
 
                return -EINVAL;
        }
 
-       strlcpy(d->i2c_adap.name, d->desc->name, sizeof(d->i2c_adap.name));
+       strscpy(d->i2c_adap.name, d->desc->name, sizeof(d->i2c_adap.name));
        d->i2c_adap.algo      = d->props.i2c_algo;
        d->i2c_adap.algo_data = NULL;
        d->i2c_adap.dev.parent = &d->udev->dev;
 
        m88ds3103_pdata.lnb_hv_pol = 1;
        m88ds3103_pdata.lnb_en_pol = 0;
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "m88ds3103", I2C_NAME_SIZE);
+       strscpy(board_info.type, "m88ds3103", I2C_NAME_SIZE);
        board_info.addr = 0x68;
        board_info.platform_data = &m88ds3103_pdata;
        request_module("m88ds3103");
        /* attach tuner */
        ts2020_config.fe = adap->fe_adap[0].fe;
        memset(&board_info, 0, sizeof(board_info));
-       strlcpy(board_info.type, "ts2022", I2C_NAME_SIZE);
+       strscpy(board_info.type, "ts2022", I2C_NAME_SIZE);
        board_info.addr = 0x60;
        board_info.platform_data = &ts2020_config;
        request_module("ts2020");
 
                        a->fe_adap[0].fe->ops.set_voltage = technisat_usb2_set_voltage;
 
                        /* if everything was successful assign a nice name to the frontend */
-                       strlcpy(a->fe_adap[0].fe->ops.info.name, a->dev->desc->name,
-                                       sizeof(a->fe_adap[0].fe->ops.info.name));
+                       strscpy(a->fe_adap[0].fe->ops.info.name,
+                               a->dev->desc->name,
+                               sizeof(a->fe_adap[0].fe->ops.info.name));
                } else {
                        dvb_frontend_detach(a->fe_adap[0].fe);
                        a->fe_adap[0].fe = NULL;
 
        if (chip->match.addr > 1)
                return -EINVAL;
        if (chip->match.addr == 1)
-               strlcpy(chip->name, "ac97", sizeof(chip->name));
+               strscpy(chip->name, "ac97", sizeof(chip->name));
        else
-               strlcpy(chip->name,
+               strscpy(chip->name,
                        dev->v4l2->v4l2_dev.name, sizeof(chip->name));
        return 0;
 }
        struct em28xx_v4l2    *v4l2 = dev->v4l2;
        struct usb_device *udev = interface_to_usbdev(dev->intf);
 
-       strlcpy(cap->driver, "em28xx", sizeof(cap->driver));
-       strlcpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
+       strscpy(cap->driver, "em28xx", sizeof(cap->driver));
+       strscpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
        usb_make_path(udev, cap->bus_info, sizeof(cap->bus_info));
 
        if (vdev->vfl_type == VFL_TYPE_GRABBER)
        if (unlikely(f->index >= ARRAY_SIZE(format)))
                return -EINVAL;
 
-       strlcpy(f->description, format[f->index].name, sizeof(f->description));
+       strscpy(f->description, format[f->index].name, sizeof(f->description));
        f->pixelformat = format[f->index].fourcc;
 
        return 0;
 
        struct i2c_board_info info;
 
        memset(&info, 0, sizeof(info));
-       strlcpy(info.type, i2c->type, sizeof(info.type));
+       strscpy(info.type, i2c->type, sizeof(info.type));
        info.addr = i2c->addr;
        info.flags = i2c->flags;
 
 
 {
        struct go7007 *go = video_drvdata(file);
 
-       strlcpy(cap->driver, "go7007", sizeof(cap->driver));
-       strlcpy(cap->card, go->name, sizeof(cap->card));
-       strlcpy(cap->bus_info, go->bus_info, sizeof(cap->bus_info));
+       strscpy(cap->driver, "go7007", sizeof(cap->driver));
+       strscpy(cap->card, go->name, sizeof(cap->card));
+       strscpy(cap->bus_info, go->bus_info, sizeof(cap->bus_info));
 
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
                                V4L2_CAP_STREAMING;
        if (inp->index >= go->board_info->num_inputs)
                return -EINVAL;
 
-       strlcpy(inp->name, go->board_info->inputs[inp->index].name,
-                       sizeof(inp->name));
+       strscpy(inp->name, go->board_info->inputs[inp->index].name,
+               sizeof(inp->name));
 
        /* If this board has a tuner, it will be the first input */
        if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) &&
 
        if (a->index >= go->board_info->num_aud_inputs)
                return -EINVAL;
-       strlcpy(a->name, go->board_info->aud_inputs[a->index].name,
+       strscpy(a->name, go->board_info->aud_inputs[a->index].name,
                sizeof(a->name));
        a->capability = V4L2_AUDCAP_STEREO;
        return 0;
        struct go7007 *go = video_drvdata(file);
 
        a->index = go->aud_input;
-       strlcpy(a->name, go->board_info->aud_inputs[go->aud_input].name,
+       strscpy(a->name, go->board_info->aud_inputs[go->aud_input].name,
                sizeof(a->name));
        a->capability = V4L2_AUDCAP_STEREO;
        return 0;
        if (t->index != 0)
                return -EINVAL;
 
-       strlcpy(t->name, "Tuner", sizeof(t->name));
+       strscpy(t->name, "Tuner", sizeof(t->name));
        return call_all(&go->v4l2_dev, tuner, g_tuner, t);
 }
 
 
                kfree(gosnd);
                return ret;
        }
-       strlcpy(gosnd->card->driver, "go7007", sizeof(gosnd->card->driver));
-       strlcpy(gosnd->card->shortname, go->name, sizeof(gosnd->card->driver));
-       strlcpy(gosnd->card->longname, gosnd->card->shortname,
-                       sizeof(gosnd->card->longname));
+       strscpy(gosnd->card->driver, "go7007", sizeof(gosnd->card->driver));
+       strscpy(gosnd->card->shortname, go->name, sizeof(gosnd->card->driver));
+       strscpy(gosnd->card->longname, gosnd->card->shortname,
+               sizeof(gosnd->card->longname));
 
        gosnd->pcm->private_data = go;
        snd_pcm_set_ops(gosnd->pcm, SNDRV_PCM_STREAM_CAPTURE,
 
 {
        struct gspca_dev *gspca_dev = video_drvdata(file);
 
-       strlcpy((char *) cap->driver, gspca_dev->sd_desc->name,
-                       sizeof cap->driver);
+       strscpy((char *)cap->driver, gspca_dev->sd_desc->name,
+               sizeof(cap->driver));
        if (gspca_dev->dev->product != NULL) {
-               strlcpy((char *) cap->card, gspca_dev->dev->product,
-                       sizeof cap->card);
+               strscpy((char *)cap->card, gspca_dev->dev->product,
+                       sizeof(cap->card));
        } else {
                snprintf((char *) cap->card, sizeof cap->card,
                        "USB Camera (%04x:%04x)",
                return -EINVAL;
        input->type = V4L2_INPUT_TYPE_CAMERA;
        input->status = gspca_dev->cam.input_flags;
-       strlcpy(input->name, gspca_dev->sd_desc->name,
+       strscpy(input->name, gspca_dev->sd_desc->name,
                sizeof input->name);
        return 0;
 }
 
        if (chip->match.addr > 1)
                return -EINVAL;
        if (chip->match.addr == 1)
-               strlcpy(chip->name, "sensor", sizeof(chip->name));
+               strscpy(chip->name, "sensor", sizeof(chip->name));
        return 0;
 }
 #endif
 
        cap->capabilities = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_TUNER |
                            V4L2_CAP_SDR_OUTPUT | V4L2_CAP_MODULATOR |
                            V4L2_CAP_DEVICE_CAPS | cap->device_caps;
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, dev->rx_vdev.name, sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, dev->rx_vdev.name, sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
 
        return 0;
        dev_dbg(dev->dev, "index=%d\n", v->index);
 
        if (v->index == 0) {
-               strlcpy(v->name, "HackRF ADC", sizeof(v->name));
+               strscpy(v->name, "HackRF ADC", sizeof(v->name));
                v->type = V4L2_TUNER_SDR;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow  = bands_adc_dac[0].rangelow;
                v->rangehigh = bands_adc_dac[0].rangehigh;
                ret = 0;
        } else if (v->index == 1) {
-               strlcpy(v->name, "HackRF RF", sizeof(v->name));
+               strscpy(v->name, "HackRF RF", sizeof(v->name));
                v->type = V4L2_TUNER_RF;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow  = bands_rx_tx[0].rangelow;
        dev_dbg(dev->dev, "index=%d\n", a->index);
 
        if (a->index == 0) {
-               strlcpy(a->name, "HackRF DAC", sizeof(a->name));
+               strscpy(a->name, "HackRF DAC", sizeof(a->name));
                a->type = V4L2_TUNER_SDR;
                a->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                a->rangelow  = bands_adc_dac[0].rangelow;
                a->rangehigh = bands_adc_dac[0].rangehigh;
                ret = 0;
        } else if (a->index == 1) {
-               strlcpy(a->name, "HackRF RF", sizeof(a->name));
+               strscpy(a->name, "HackRF RF", sizeof(a->name));
                a->type = V4L2_TUNER_RF;
                a->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                a->rangelow  = bands_rx_tx[0].rangelow;
 
 
        audio->index = dev->options.audio_input;
        audio->capability = V4L2_AUDCAP_STEREO;
-       strlcpy(audio->name, audio_iname[audio->index], sizeof(audio->name));
+       strscpy(audio->name, audio_iname[audio->index], sizeof(audio->name));
        audio->name[sizeof(audio->name) - 1] = '\0';
        return 0;
 }
 
 
        dev_dbg(dev->dev, "\n");
 
-       strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
-       strlcpy(cap->card, dev->vdev.name, sizeof(cap->card));
+       strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
+       strscpy(cap->card, dev->vdev.name, sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
                        V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
        if (f->index >= dev->num_formats)
                return -EINVAL;
 
-       strlcpy(f->description, formats[f->index].name, sizeof(f->description));
+       strscpy(f->description, formats[f->index].name, sizeof(f->description));
        f->pixelformat = formats[f->index].pixelformat;
 
        return 0;
        dev_dbg(dev->dev, "index=%d\n", v->index);
 
        if (v->index == 0) {
-               strlcpy(v->name, "Mirics MSi2500", sizeof(v->name));
+               strscpy(v->name, "Mirics MSi2500", sizeof(v->name));
                v->type = V4L2_TUNER_ADC;
                v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
                v->rangelow =   1200000;
 
                /* IR Receiver */
                info.addr          = 0x18;
                info.platform_data = init_data;
-               strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
+               strscpy(info.type, "ir_video", I2C_NAME_SIZE);
                pvr2_trace(PVR2_TRACE_INFO, "Binding %s to i2c address 0x%02x.",
                           info.type, info.addr);
                i2c_new_device(&hdw->i2c_adap, &info);
                /* IR Transceiver */
                info.addr = 0x71;
                info.platform_data = init_data;
-               strlcpy(info.type, "ir_z8f0811_haup", I2C_NAME_SIZE);
+               strscpy(info.type, "ir_z8f0811_haup", I2C_NAME_SIZE);
                pvr2_trace(PVR2_TRACE_INFO, "Binding %s to i2c address 0x%02x.",
                           info.type, info.addr);
                i2c_new_device(&hdw->i2c_adap, &info);
        // Configure the adapter and set up everything else related to it.
        hdw->i2c_adap = pvr2_i2c_adap_template;
        hdw->i2c_algo = pvr2_i2c_algo_template;
-       strlcpy(hdw->i2c_adap.name,hdw->name,sizeof(hdw->i2c_adap.name));
+       strscpy(hdw->i2c_adap.name, hdw->name, sizeof(hdw->i2c_adap.name));
        hdw->i2c_adap.dev.parent = &hdw->usb_dev->dev;
        hdw->i2c_adap.algo = &hdw->i2c_algo;
        hdw->i2c_adap.algo_data = hdw;
 
        struct pvr2_v4l2_fh *fh = file->private_data;
        struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
 
-       strlcpy(cap->driver, "pvrusb2", sizeof(cap->driver));
-       strlcpy(cap->bus_info, pvr2_hdw_get_bus_info(hdw),
-                       sizeof(cap->bus_info));
-       strlcpy(cap->card, pvr2_hdw_get_desc(hdw), sizeof(cap->card));
+       strscpy(cap->driver, "pvrusb2", sizeof(cap->driver));
+       strscpy(cap->bus_info, pvr2_hdw_get_bus_info(hdw),
+               sizeof(cap->bus_info));
+       strscpy(cap->card, pvr2_hdw_get_desc(hdw), sizeof(cap->card));
        cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER |
                            V4L2_CAP_AUDIO | V4L2_CAP_RADIO |
                            V4L2_CAP_READWRITE | V4L2_CAP_DEVICE_CAPS;
                        "QUERYCTRL id=0x%x mapping name=%s (%s)",
                        vc->id, pvr2_ctrl_get_name(cptr),
                        pvr2_ctrl_get_desc(cptr));
-       strlcpy(vc->name, pvr2_ctrl_get_desc(cptr), sizeof(vc->name));
+       strscpy(vc->name, pvr2_ctrl_get_desc(cptr), sizeof(vc->name));
        vc->flags = pvr2_ctrl_get_v4lflags(cptr);
        pvr2_ctrl_get_def(cptr, &val);
        vc->default_value = val;
 
        struct pwc_device *pdev = video_drvdata(file);
 
        strcpy(cap->driver, PWC_NAME);
-       strlcpy(cap->card, pdev->vdev.name, sizeof(cap->card));
+       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 |
                                        V4L2_CAP_READWRITE;
        if (i->index)   /* Only one INPUT is supported */
                return -EINVAL;
 
-       strlcpy(i->name, "Camera", sizeof(i->name));
+       strscpy(i->name, "Camera", sizeof(i->name));
        i->type = V4L2_INPUT_TYPE_CAMERA;
        return 0;
 }
                /* RAW format */
                f->pixelformat = pdev->type <= 646 ? V4L2_PIX_FMT_PWC1 : V4L2_PIX_FMT_PWC2;
                f->flags = V4L2_FMT_FLAG_COMPRESSED;
-               strlcpy(f->description, "Raw Philips Webcam", sizeof(f->description));
+               strscpy(f->description, "Raw Philips Webcam",
+                       sizeof(f->description));
                break;
        case 1:
                f->pixelformat = V4L2_PIX_FMT_YUV420;
-               strlcpy(f->description, "4:2:0, planar, Y-Cb-Cr", sizeof(f->description));
+               strscpy(f->description, "4:2:0, planar, Y-Cb-Cr",
+                       sizeof(f->description));
                break;
        default:
                return -EINVAL;
 
        struct s2255_vc *vc = video_drvdata(file);
        struct s2255_dev *dev = vc->dev;
 
-       strlcpy(cap->driver, "s2255", sizeof(cap->driver));
-       strlcpy(cap->card, "s2255", sizeof(cap->card));
+       strscpy(cap->driver, "s2255", sizeof(cap->driver));
+       strscpy(cap->card, "s2255", sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
                V4L2_CAP_READWRITE;
        if (!jpeg_enable && ((formats[index].fourcc == V4L2_PIX_FMT_JPEG) ||
                        (formats[index].fourcc == V4L2_PIX_FMT_MJPEG)))
                return -EINVAL;
-       strlcpy(f->description, formats[index].name, sizeof(f->description));
+       strscpy(f->description, formats[index].name, sizeof(f->description));
        f->pixelformat = formats[index].fourcc;
        return 0;
 }
        switch (dev->pid) {
        case 0x2255:
        default:
-               strlcpy(inp->name, "Composite", sizeof(inp->name));
+               strscpy(inp->name, "Composite", sizeof(inp->name));
                break;
        case 0x2257:
-               strlcpy(inp->name, (vc->idx < 2) ? "Composite" : "S-Video",
+               strscpy(inp->name, (vc->idx < 2) ? "Composite" : "S-Video",
                        sizeof(inp->name));
                break;
        }
 
        if (f->index != 0)
                return -EINVAL;
 
-       strlcpy(f->description, format[f->index].name, sizeof(f->description));
+       strscpy(f->description, format[f->index].name, sizeof(f->description));
        f->pixelformat = format[f->index].fourcc;
        return 0;
 }
 
        dev->i2c_adap.owner = THIS_MODULE;
        dev->i2c_adap.algo = &tm6000_algo;
        dev->i2c_adap.dev.parent = &dev->udev->dev;
-       strlcpy(dev->i2c_adap.name, dev->name, sizeof(dev->i2c_adap.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);
        rc = i2c_add_adapter(&dev->i2c_adap);
                return rc;
 
        dev->i2c_client.adapter = &dev->i2c_adap;
-       strlcpy(dev->i2c_client.name, "tm6000 internal", I2C_NAME_SIZE);
+       strscpy(dev->i2c_client.name, "tm6000 internal", I2C_NAME_SIZE);
        tm6000_i2c_eeprom(dev);
 
        return 0;
 
        struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev;
        struct video_device *vdev = video_devdata(file);
 
-       strlcpy(cap->driver, "tm6000", sizeof(cap->driver));
-       strlcpy(cap->card, "Trident TVMaster TM5600/6000/6010", sizeof(cap->card));
+       strscpy(cap->driver, "tm6000", sizeof(cap->driver));
+       strscpy(cap->card, "Trident TVMaster TM5600/6000/6010",
+               sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        if (dev->tuner_type != TUNER_ABSENT)
                cap->device_caps |= V4L2_CAP_TUNER;
        if (f->index >= ARRAY_SIZE(format))
                return -EINVAL;
 
-       strlcpy(f->description, format[f->index].name, sizeof(f->description));
+       strscpy(f->description, format[f->index].name, sizeof(f->description));
        f->pixelformat = format[f->index].fourcc;
        return 0;
 }
 
        if (rv < 0)
                return rv;
 
-       strlcpy(card->driver, usbtv->dev->driver->name, sizeof(card->driver));
-       strlcpy(card->shortname, "usbtv", sizeof(card->shortname));
+       strscpy(card->driver, usbtv->dev->driver->name, sizeof(card->driver));
+       strscpy(card->shortname, "usbtv", sizeof(card->shortname));
        snprintf(card->longname, sizeof(card->longname),
                "USBTV Audio at bus %d device %d", usbtv->udev->bus->busnum,
                usbtv->udev->devnum);
        if (rv < 0)
                goto err;
 
-       strlcpy(pcm->name, "USBTV Audio Input", sizeof(pcm->name));
+       strscpy(pcm->name, "USBTV Audio Input", sizeof(pcm->name));
        pcm->info_flags = 0;
        pcm->private_data = usbtv;
 
 
 {
        struct usbtv *dev = video_drvdata(file);
 
-       strlcpy(cap->driver, "usbtv", sizeof(cap->driver));
-       strlcpy(cap->card, "usbtv", sizeof(cap->card));
+       strscpy(cap->driver, "usbtv", sizeof(cap->driver));
+       strscpy(cap->card, "usbtv", sizeof(cap->card));
        usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE;
        cap->device_caps |= V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
 
        switch (i->index) {
        case USBTV_COMPOSITE_INPUT:
-               strlcpy(i->name, "Composite", sizeof(i->name));
+               strscpy(i->name, "Composite", sizeof(i->name));
                break;
        case USBTV_SVIDEO_INPUT:
-               strlcpy(i->name, "S-Video", sizeof(i->name));
+               strscpy(i->name, "S-Video", sizeof(i->name));
                break;
        default:
                return -EINVAL;
        if (f->index > 0)
                return -EINVAL;
 
-       strlcpy(f->description, "16 bpp YUY2, 4:2:2, packed",
-                                       sizeof(f->description));
+       strscpy(f->description, "16 bpp YUY2, 4:2:2, packed",
+               sizeof(f->description));
        f->pixelformat = V4L2_PIX_FMT_YUYV;
        return 0;
 }
        }
 
        /* Video structure */
-       strlcpy(usbtv->vdev.name, "usbtv", sizeof(usbtv->vdev.name));
+       strscpy(usbtv->vdev.name, "usbtv", sizeof(usbtv->vdev.name));
        usbtv->vdev.v4l2_dev = &usbtv->v4l2_dev;
        usbtv->vdev.release = video_device_release_empty;
        usbtv->vdev.fops = &usbtv_fops;
 
        struct usb_usbvision *usbvision = video_drvdata(file);
        struct video_device *vdev = video_devdata(file);
 
-       strlcpy(vc->driver, "USBVision", sizeof(vc->driver));
-       strlcpy(vc->card,
+       strscpy(vc->driver, "USBVision", sizeof(vc->driver));
+       strscpy(vc->card,
                usbvision_device_data[usbvision->dev_model].model_string,
                sizeof(vc->card));
        usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
 
        memset(v4l2_ctrl, 0, sizeof(*v4l2_ctrl));
        v4l2_ctrl->id = mapping->id;
        v4l2_ctrl->type = mapping->v4l2_type;
-       strlcpy(v4l2_ctrl->name, mapping->name, sizeof(v4l2_ctrl->name));
+       strscpy(v4l2_ctrl->name, mapping->name, sizeof(v4l2_ctrl->name));
        v4l2_ctrl->flags = 0;
 
        if (!(ctrl->info.flags & UVC_CTRL_FLAG_GET_CUR))
                }
        }
 
-       strlcpy(query_menu->name, menu_info->name, sizeof(query_menu->name));
+       strscpy(query_menu->name, menu_info->name, sizeof(query_menu->name));
 
 done:
        mutex_unlock(&chain->ctrl_mutex);
 
                fmtdesc = uvc_format_by_guid(&buffer[5]);
 
                if (fmtdesc != NULL) {
-                       strlcpy(format->name, fmtdesc->name,
+                       strscpy(format->name, fmtdesc->name,
                                sizeof(format->name));
                        format->fcc = fmtdesc->fcc;
                } else {
                 */
                if (dev->quirks & UVC_QUIRK_FORCE_Y8) {
                        if (format->fcc == V4L2_PIX_FMT_YUYV) {
-                               strlcpy(format->name, "Greyscale 8-bit (Y8  )",
+                               strscpy(format->name, "Greyscale 8-bit (Y8  )",
                                        sizeof(format->name));
                                format->fcc = V4L2_PIX_FMT_GREY;
                                format->bpp = 8;
                        return -EINVAL;
                }
 
-               strlcpy(format->name, "MJPEG", sizeof(format->name));
+               strscpy(format->name, "MJPEG", sizeof(format->name));
                format->fcc = V4L2_PIX_FMT_MJPEG;
                format->flags = UVC_FMT_FLAG_COMPRESSED;
                format->bpp = 0;
 
                switch (buffer[8] & 0x7f) {
                case 0:
-                       strlcpy(format->name, "SD-DV", sizeof(format->name));
+                       strscpy(format->name, "SD-DV", sizeof(format->name));
                        break;
                case 1:
-                       strlcpy(format->name, "SDL-DV", sizeof(format->name));
+                       strscpy(format->name, "SDL-DV", sizeof(format->name));
                        break;
                case 2:
-                       strlcpy(format->name, "HD-DV", sizeof(format->name));
+                       strscpy(format->name, "HD-DV", sizeof(format->name));
                        break;
                default:
                        uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming "
                break;
        }
 
-       strlcpy(vdev->name, dev->name, sizeof(vdev->name));
+       strscpy(vdev->name, dev->name, sizeof(vdev->name));
 
        /*
         * Set the driver data before calling video_register_device, otherwise
                    ? dev->info->quirks : uvc_quirks_param;
 
        if (udev->product != NULL)
-               strlcpy(dev->name, udev->product, sizeof(dev->name));
+               strscpy(dev->name, udev->product, sizeof(dev->name));
        else
                snprintf(dev->name, sizeof(dev->name),
                         "UVC Camera (%04x:%04x)",
        /* Initialize the media device and register the V4L2 device. */
 #ifdef CONFIG_MEDIA_CONTROLLER
        dev->mdev.dev = &intf->dev;
-       strlcpy(dev->mdev.model, dev->name, sizeof(dev->mdev.model));
+       strscpy(dev->mdev.model, dev->name, sizeof(dev->mdev.model));
        if (udev->serial)
-               strlcpy(dev->mdev.serial, udev->serial,
+               strscpy(dev->mdev.serial, udev->serial,
                        sizeof(dev->mdev.serial));
        strcpy(dev->mdev.bus_info, udev->devpath);
        dev->mdev.hw_revision = le16_to_cpu(udev->descriptor.bcdDevice);
 
 
        if (UVC_ENTITY_TYPE(entity) != UVC_TT_STREAMING) {
                v4l2_subdev_init(&entity->subdev, &uvc_subdev_ops);
-               strlcpy(entity->subdev.name, entity->name,
+               strscpy(entity->subdev.name, entity->name,
                        sizeof(entity->subdev.name));
 
                ret = media_entity_pads_init(&entity->subdev.entity,
 
        struct uvc_streaming *stream = video_get_drvdata(vfh->vdev);
        struct uvc_video_chain *chain = stream->chain;
 
-       strlcpy(cap->driver, "uvcvideo", sizeof(cap->driver));
-       strlcpy(cap->card, vfh->vdev->name, sizeof(cap->card));
+       strscpy(cap->driver, "uvcvideo", sizeof(cap->driver));
+       strscpy(cap->card, vfh->vdev->name, sizeof(cap->card));
        usb_make_path(stream->dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->capabilities = V4L2_CAP_DEVICE_CAPS | V4L2_CAP_STREAMING
                          | chain->caps;
 
        struct uvc_video_chain *chain = handle->chain;
        struct uvc_streaming *stream = handle->stream;
 
-       strlcpy(cap->driver, "uvcvideo", sizeof(cap->driver));
-       strlcpy(cap->card, vdev->name, sizeof(cap->card));
+       strscpy(cap->driver, "uvcvideo", sizeof(cap->driver));
+       strscpy(cap->card, vdev->name, sizeof(cap->card));
        usb_make_path(stream->dev->udev, cap->bus_info, sizeof(cap->bus_info));
        cap->capabilities = V4L2_CAP_DEVICE_CAPS | V4L2_CAP_STREAMING
                          | chain->caps;
        fmt->flags = 0;
        if (format->flags & UVC_FMT_FLAG_COMPRESSED)
                fmt->flags |= V4L2_FMT_FLAG_COMPRESSED;
-       strlcpy(fmt->description, format->name, sizeof(fmt->description));
+       strscpy(fmt->description, format->name, sizeof(fmt->description));
        fmt->description[sizeof(fmt->description) - 1] = 0;
        fmt->pixelformat = format->fcc;
        return 0;
 
        memset(input, 0, sizeof(*input));
        input->index = index;
-       strlcpy(input->name, iterm->name, sizeof(input->name));
+       strscpy(input->name, iterm->name, sizeof(input->name));
        if (UVC_ENTITY_TYPE(iterm) == UVC_ITT_CAMERA)
                input->type = V4L2_INPUT_TYPE_CAMERA;
 
 
        qec->id = qc.id;
        qec->type = qc.type;
-       strlcpy(qec->name, qc.name, sizeof(qec->name));
+       strscpy(qec->name, qc.name, sizeof(qec->name));
        qec->minimum = qc.minimum;
        qec->maximum = qc.maximum;
        qec->step = qc.step;
 
 {
        struct zr364xx_camera *cam = video_drvdata(file);
 
-       strlcpy(cap->driver, DRIVER_DESC, sizeof(cap->driver));
-       strlcpy(cap->card, cam->udev->product, sizeof(cap->card));
-       strlcpy(cap->bus_info, dev_name(&cam->udev->dev),
+       strscpy(cap->driver, DRIVER_DESC, sizeof(cap->driver));
+       strscpy(cap->card, cam->udev->product, sizeof(cap->card));
+       strscpy(cap->bus_info, dev_name(&cam->udev->dev),
                sizeof(cap->bus_info));
        cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
                            V4L2_CAP_READWRITE |
 
        qctrl->step = step;
        qctrl->default_value = def;
        qctrl->reserved[0] = qctrl->reserved[1] = 0;
-       strlcpy(qctrl->name, name, sizeof(qctrl->name));
+       strscpy(qctrl->name, name, sizeof(qctrl->name));
        return 0;
 }
 EXPORT_SYMBOL(v4l2_ctrl_query_fill);
        /* Setup the i2c board info with the device type and
           the device address. */
        memset(&info, 0, sizeof(info));
-       strlcpy(info.type, client_type, sizeof(info.type));
+       strscpy(info.type, client_type, sizeof(info.type));
        info.addr = addr;
 
        return v4l2_i2c_new_subdev_board(v4l2_dev, adapter, &info, probe_addrs);
        v4l2_set_subdevdata(sd, spi);
        spi_set_drvdata(spi, sd);
        /* initialize name */
-       strlcpy(sd->name, spi->dev.driver->name, sizeof(sd->name));
+       strscpy(sd->name, spi->dev.driver->name, sizeof(sd->name));
 }
 EXPORT_SYMBOL_GPL(v4l2_spi_subdev_init);
 
 
                qc->id = id;
        else
                qc->id = ctrl->id;
-       strlcpy(qc->name, ctrl->name, sizeof(qc->name));
+       strscpy(qc->name, ctrl->name, sizeof(qc->name));
        qc->flags = user_flags(ctrl);
        qc->type = ctrl->type;
        qc->elem_size = ctrl->elem_size;
        qc->id = qec.id;
        qc->type = qec.type;
        qc->flags = qec.flags;
-       strlcpy(qc->name, qec.name, sizeof(qc->name));
+       strscpy(qc->name, qec.name, sizeof(qc->name));
        switch (qc->type) {
        case V4L2_CTRL_TYPE_INTEGER:
        case V4L2_CTRL_TYPE_BOOLEAN:
        if (ctrl->type == V4L2_CTRL_TYPE_MENU) {
                if (ctrl->qmenu[i] == NULL || ctrl->qmenu[i][0] == '\0')
                        return -EINVAL;
-               strlcpy(qm->name, ctrl->qmenu[i], sizeof(qm->name));
+               strscpy(qm->name, ctrl->qmenu[i], sizeof(qm->name));
        } else {
                qm->value = ctrl->qmenu_int[i];
        }
 
        /* It's a driver bug if this happens. */
        WARN_ON(ctrl->type != V4L2_CTRL_TYPE_STRING);
-       strlcpy(ctrl->p_new.p_char, s, ctrl->maximum + 1);
+       strscpy(ctrl->p_new.p_char, s, ctrl->maximum + 1);
        return set_ctrl(NULL, ctrl, 0);
 }
 EXPORT_SYMBOL(__v4l2_ctrl_s_ctrl_string);
 
                }
 
                video_set_drvdata(vdev, sd);
-               strlcpy(vdev->name, sd->name, sizeof(vdev->name));
+               strscpy(vdev->name, sd->name, sizeof(vdev->name));
                vdev->v4l2_dev = v4l2_dev;
                vdev->fops = &v4l2_subdev_fops;
                vdev->release = v4l2_device_release_subdev_node;
 
        v4l2_subdev_init(sd, &v4l2_flash_subdev_ops);
        sd->internal_ops = &v4l2_flash_subdev_internal_ops;
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
-       strlcpy(sd->name, config->dev_name, sizeof(sd->name));
+       strscpy(sd->name, config->dev_name, sizeof(sd->name));
 
        ret = media_entity_pads_init(&sd->entity, 0, NULL);
        if (ret < 0)
 
        vs->id = id;
        v4l2_video_std_frame_period(id, &vs->frameperiod);
        vs->framelines = (id & V4L2_STD_525_60) ? 525 : 625;
-       strlcpy(vs->name, name, sizeof(vs->name));
+       strscpy(vs->name, name, sizeof(vs->name));
        return 0;
 }
 EXPORT_SYMBOL(v4l2_video_std_construct);
        }
 
        if (descr)
-               WARN_ON(strlcpy(fmt->description, descr, sz) >= sz);
+               WARN_ON(strscpy(fmt->description, descr, sz) >= sz);
        fmt->flags = flags;
 }
 
                        p->flags |= V4L2_CHIP_FL_WRITABLE;
                if (ops->vidioc_g_register)
                        p->flags |= V4L2_CHIP_FL_READABLE;
-               strlcpy(p->name, vfd->v4l2_dev->name, sizeof(p->name));
+               strscpy(p->name, vfd->v4l2_dev->name, sizeof(p->name));
                if (ops->vidioc_g_chip_info)
                        return ops->vidioc_g_chip_info(file, fh, arg);
                if (p->match.addr)
                                p->flags |= V4L2_CHIP_FL_WRITABLE;
                        if (sd->ops->core && sd->ops->core->g_register)
                                p->flags |= V4L2_CHIP_FL_READABLE;
-                       strlcpy(p->name, sd->name, sizeof(p->name));
+                       strscpy(p->name, sd->name, sizeof(p->name));
                        return 0;
                }
                break;
 
                        p->flags |= V4L2_CHIP_FL_WRITABLE;
                if (sd->ops->core && sd->ops->core->g_register)
                        p->flags |= V4L2_CHIP_FL_READABLE;
-               strlcpy(p->name, sd->name, sizeof(p->name));
+               strscpy(p->name, sd->name, sizeof(p->name));
                return 0;
        }
 #endif
 
 {
        struct bcm2048_device *bdev = video_get_drvdata(video_devdata(file));
 
-       strlcpy(capability->driver, BCM2048_DRIVER_NAME,
+       strscpy(capability->driver, BCM2048_DRIVER_NAME,
                sizeof(capability->driver));
-       strlcpy(capability->card, BCM2048_DRIVER_CARD,
+       strscpy(capability->card, BCM2048_DRIVER_CARD,
                sizeof(capability->card));
        snprintf(capability->bus_info, 32, "I2C: 0x%X", bdev->client->addr);
        capability->device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO |
 
 
        v4l2_subdev_init(sd, &ipipe_v4l2_ops);
        sd->internal_ops = &ipipe_v4l2_internal_ops;
-       strlcpy(sd->name, "DAVINCI IPIPE", sizeof(sd->name));
+       strscpy(sd->name, "DAVINCI IPIPE", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for davinci subdevs */
        v4l2_set_subdevdata(sd, ipipe);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
        v4l2_subdev_init(sd, &ipipeif_v4l2_ops);
 
        sd->internal_ops = &ipipeif_v4l2_internal_ops;
-       strlcpy(sd->name, "DAVINCI IPIPEIF", sizeof(sd->name));
+       strscpy(sd->name, "DAVINCI IPIPEIF", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for davinci subdevs */
 
        v4l2_set_subdevdata(sd, ipipeif);
 
        isif->video_out.ops = &isif_video_ops;
        v4l2_subdev_init(sd, &isif_v4l2_ops);
        sd->internal_ops = &isif_v4l2_internal_ops;
-       strlcpy(sd->name, "DAVINCI ISIF", sizeof(sd->name));
+       strscpy(sd->name, "DAVINCI ISIF", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for davinci subdevs */
        v4l2_set_subdevdata(sd, isif);
        sd->flags |= V4L2_SUBDEV_FL_HAS_EVENTS | V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        v4l2_subdev_init(sd, &resizer_v4l2_ops);
        sd->internal_ops = &resizer_v4l2_internal_ops;
-       strlcpy(sd->name, "DAVINCI RESIZER CROP", sizeof(sd->name));
+       strscpy(sd->name, "DAVINCI RESIZER CROP", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for davinci subdevs */
        v4l2_set_subdevdata(sd, vpfe_rsz);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
        v4l2_subdev_init(sd, &resizer_v4l2_ops);
        sd->internal_ops = &resizer_v4l2_internal_ops;
-       strlcpy(sd->name, "DAVINCI RESIZER A", sizeof(sd->name));
+       strscpy(sd->name, "DAVINCI RESIZER A", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for davinci subdevs */
        v4l2_set_subdevdata(sd, vpfe_rsz);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
        v4l2_subdev_init(sd, &resizer_v4l2_ops);
        sd->internal_ops = &resizer_v4l2_internal_ops;
-       strlcpy(sd->name, "DAVINCI RESIZER B", sizeof(sd->name));
+       strscpy(sd->name, "DAVINCI RESIZER B", sizeof(sd->name));
        sd->grp_id = 1 << 16;   /* group ID for davinci subdevs */
        v4l2_set_subdevdata(sd, vpfe_rsz);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
                cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
        cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
                            V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
-       strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
-       strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
-       strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
+       strscpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
+       strscpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
 
        return 0;
 }
 
 {
        struct capture_priv *priv = video_drvdata(file);
 
-       strlcpy(cap->driver, "imx-media-capture", sizeof(cap->driver));
-       strlcpy(cap->card, "imx-media-capture", sizeof(cap->card));
+       strscpy(cap->driver, "imx-media-capture", sizeof(cap->driver));
+       strscpy(cap->card, "imx-media-capture", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                 "platform:%s", priv->src_sd->name);
 
 
 
        dev_set_drvdata(dev, imxmd);
 
-       strlcpy(imxmd->md.model, "imx-media", sizeof(imxmd->md.model));
+       strscpy(imxmd->md.model, "imx-media", sizeof(imxmd->md.model));
        imxmd->md.ops = &imx_media_md_ops;
        imxmd->md.dev = dev;
 
        mutex_init(&imxmd->mutex);
 
        imxmd->v4l2_dev.mdev = &imxmd->md;
-       strlcpy(imxmd->v4l2_dev.name, "imx-media",
+       strscpy(imxmd->v4l2_dev.name, "imx-media",
                sizeof(imxmd->v4l2_dev.name));
 
        media_device_init(&imxmd->md);
 
        int ret;
 
        iss->media_dev.dev = iss->dev;
-       strlcpy(iss->media_dev.model, "TI OMAP4 ISS",
+       strscpy(iss->media_dev.model, "TI OMAP4 ISS",
                sizeof(iss->media_dev.model));
        iss->media_dev.hw_revision = iss->revision;
        iss->media_dev.ops = &iss_media_ops;
 
 
        v4l2_subdev_init(sd, &ipipe_v4l2_ops);
        sd->internal_ops = &ipipe_v4l2_internal_ops;
-       strlcpy(sd->name, "OMAP4 ISS ISP IPIPE", sizeof(sd->name));
+       strscpy(sd->name, "OMAP4 ISS ISP IPIPE", sizeof(sd->name));
        sd->grp_id = BIT(16);   /* group ID for iss subdevs */
        v4l2_set_subdevdata(sd, ipipe);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        v4l2_subdev_init(sd, &ipipeif_v4l2_ops);
        sd->internal_ops = &ipipeif_v4l2_internal_ops;
-       strlcpy(sd->name, "OMAP4 ISS ISP IPIPEIF", sizeof(sd->name));
+       strscpy(sd->name, "OMAP4 ISS ISP IPIPEIF", sizeof(sd->name));
        sd->grp_id = BIT(16);   /* group ID for iss subdevs */
        v4l2_set_subdevdata(sd, ipipeif);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 
        v4l2_subdev_init(sd, &resizer_v4l2_ops);
        sd->internal_ops = &resizer_v4l2_internal_ops;
-       strlcpy(sd->name, "OMAP4 ISS ISP resizer", sizeof(sd->name));
+       strscpy(sd->name, "OMAP4 ISS ISP resizer", sizeof(sd->name));
        sd->grp_id = BIT(16);   /* group ID for iss subdevs */
        v4l2_set_subdevdata(sd, resizer);
        sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
 
 {
        struct iss_video *video = video_drvdata(file);
 
-       strlcpy(cap->driver, ISS_VIDEO_DRIVER_NAME, sizeof(cap->driver));
-       strlcpy(cap->card, video->video.name, sizeof(cap->card));
-       strlcpy(cap->bus_info, "media", sizeof(cap->bus_info));
+       strscpy(cap->driver, ISS_VIDEO_DRIVER_NAME, sizeof(cap->driver));
+       strscpy(cap->card, video->video.name, sizeof(cap->card));
+       strscpy(cap->bus_info, "media", sizeof(cap->bus_info));
 
        if (video->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
                cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
 
                if (index == 0) {
                        f->pixelformat = info->pixelformat;
-                       strlcpy(f->description, info->description,
+                       strscpy(f->description, info->description,
                                sizeof(f->description));
                        return 0;
                }
        if (input->index > 0)
                return -EINVAL;
 
-       strlcpy(input->name, "camera", sizeof(input->name));
+       strscpy(input->name, "camera", sizeof(input->name));
        input->type = V4L2_INPUT_TYPE_CAMERA;
 
        return 0;
 
 {
        zr->i2c_algo = zoran_i2c_bit_data_template;
        zr->i2c_algo.data = zr;
-       strlcpy(zr->i2c_adapter.name, ZR_DEVNAME(zr),
+       strscpy(zr->i2c_adapter.name, ZR_DEVNAME(zr),
                sizeof(zr->i2c_adapter.name));
        i2c_set_adapdata(&zr->i2c_adapter, &zr->v4l2_dev);
        zr->i2c_adapter.algo_data = &zr->i2c_algo;
        m->type = 0;
 
        m->flags = CODEC_FLAG_ENCODER | CODEC_FLAG_DECODER;
-       strlcpy(m->name, ZR_DEVNAME(zr), sizeof(m->name));
+       strscpy(m->name, ZR_DEVNAME(zr), sizeof(m->name));
        m->data = zr;
 
        switch (type)
 
        struct zoran_fh *fh = __fh;
        struct zoran *zr = fh->zr;
 
-       strlcpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card));
-       strlcpy(cap->driver, "zoran", sizeof(cap->driver));
+       strscpy(cap->card, ZR_DEVNAME(zr), sizeof(cap->card));
+       strscpy(cap->driver, "zoran", sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
                 pci_name(zr->pci_dev));
        cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |