Skip to content

Instantly share code, notes, and snippets.

@shadeslayer
Created October 21, 2019 10:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shadeslayer/9158fb1a3c8b516e9acc05c14d93e801 to your computer and use it in GitHub Desktop.
Save shadeslayer/9158fb1a3c8b516e9acc05c14d93e801 to your computer and use it in GitHub Desktop.
int drm_dumb_set_label_ioctl(struct drm_device *dev,
void *data, struct drm_file *file_priv)
{
char *label;
struct drm_dumb_set_label_object *args = data;
int ret = 0;
if (!dev->driver->label)
return -EOPNOTSUPP;
if (!args->len || !args->name)
label = NULL;
else
label = strndup_user(u64_to_user_ptr(args->name), args->len);
if (IS_ERR(label)) {
ret = PTR_ERR(label);
return ret;
}
ret = dev->driver->label(dev, file_priv, args->handle, label);
err:
kfree(label);
return ret;
}
@bbrezillon
Copy link

bbrezillon commented Oct 21, 2019

I'd rather have

if (!args->len)
	label = NULL;
else if (args->len && args->name)
	label = strndup_user(u64_to_user_ptr(args->name), args->len);
else
	return -EINVAL;

as I consider args->len && !args->name a bug

@shadeslayer
Copy link
Author

That sounds reasonable to me too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment