goto err;
 
        card->dev = &dev->dev;
-       strncpy(card->driver, dev->dev.driver->name, sizeof(card->driver));
+       strlcpy(card->driver, dev->dev.driver->name, sizeof(card->driver));
 
        ret = pxa2xx_pcm_new(card, &pxa2xx_ac97_pcm_client, &pxa2xx_ac97_pcm);
        if (ret)
 
        if (idx >= num_names)
                return -EINVAL;
        input_names = ak->adc_info[mixer_ch].input_names;
-       strncpy(uinfo->value.enumerated.name, input_names[idx],
+       strlcpy(uinfo->value.enumerated.name, input_names[idx],
                sizeof(uinfo->value.enumerated.name));
        return 0;
 }
 
        /* drop the original AD1888 HPF control */
        memset(&elem, 0, sizeof(elem));
        elem.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-       strncpy(elem.name, "High Pass Filter Enable", sizeof(elem.name));
+       strlcpy(elem.name, "High Pass Filter Enable", sizeof(elem.name));
        snd_ctl_remove_id(card, &elem);
 
        /* drop the original V_REFOUT control */
        memset(&elem, 0, sizeof(elem));
        elem.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-       strncpy(elem.name, "V_REFOUT Enable", sizeof(elem.name));
+       strlcpy(elem.name, "V_REFOUT Enable", sizeof(elem.name));
        snd_ctl_remove_id(card, &elem);
 
        /* add the OLPC-specific controls */
 
        /* notify about master speaker mute change */
        memset(&elem_id, 0, sizeof(elem_id));
        elem_id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
-       strncpy(elem_id.name, "Master Speakers Playback Switch",
+       strlcpy(elem_id.name, "Master Speakers Playback Switch",
                                                sizeof(elem_id.name));
        kctl = snd_ctl_find_id(ice->card, &elem_id);
        snd_ctl_notify(ice->card, SNDRV_CTL_EVENT_MASK_VALUE, &kctl->id);
        /* and headphone mute change */
-       strncpy(elem_id.name, spec->wm8776.ctl[WM8776_CTL_HP_SW].name,
+       strlcpy(elem_id.name, spec->wm8776.ctl[WM8776_CTL_HP_SW].name,
                                                sizeof(elem_id.name));
        kctl = snd_ctl_find_id(ice->card, &elem_id);
        snd_ctl_notify(ice->card, SNDRV_CTL_EVENT_MASK_VALUE, &kctl->id);
 
        unsigned int index_offset;
 
        memset(&elem_id, 0, sizeof(elem_id));
-       strncpy(elem_id.name, ctl_name, sizeof(elem_id.name));
+       strlcpy(elem_id.name, ctl_name, sizeof(elem_id.name));
        elem_id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
        kctl = snd_ctl_find_id(card, &elem_id);
        if (!kctl)
 
                memset(&hdspm_version, 0, sizeof(hdspm_version));
 
                hdspm_version.card_type = hdspm->io_type;
-               strncpy(hdspm_version.cardname, hdspm->card_name,
+               strlcpy(hdspm_version.cardname, hdspm->card_name,
                                sizeof(hdspm_version.cardname));
                hdspm_version.serial = hdspm->serial;
                hdspm_version.firmware_rev = hdspm->firmware_rev;