ci = &cmsg->cm_u.cm_clntinfo;
                        if (get_user(namelen, &ci->cc_name.cn_len))
                                return -EFAULT;
-                       if (!namelen) {
-                               dprintk("%s: namelen should not be zero", __func__);
+                       if (namelen == 0 || namelen > NFS4_OPAQUE_LIMIT) {
+                               dprintk("%s: invalid namelen (%u)", __func__, namelen);
                                return -EINVAL;
                        }
                        name.data = memdup_user(&ci->cc_name.cn_id, namelen);
                        cnm = &cmsg->cm_u.cm_name;
                        if (get_user(namelen, &cnm->cn_len))
                                return -EFAULT;
-                       if (!namelen) {
-                               dprintk("%s: namelen should not be zero", __func__);
+                       if (namelen == 0 || namelen > NFS4_OPAQUE_LIMIT) {
+                               dprintk("%s: invalid namelen (%u)", __func__, namelen);
                                return -EINVAL;
                        }
                        name.data = memdup_user(&cnm->cn_id, namelen);