Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Minor comment conflict in mac80211. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -689,14 +689,15 @@ int bpf_get_file_flag(int flags)
|
||||
offsetof(union bpf_attr, CMD##_LAST_FIELD) - \
|
||||
sizeof(attr->CMD##_LAST_FIELD)) != NULL
|
||||
|
||||
/* dst and src must have at least BPF_OBJ_NAME_LEN number of bytes.
|
||||
* Return 0 on success and < 0 on error.
|
||||
/* dst and src must have at least "size" number of bytes.
|
||||
* Return strlen on success and < 0 on error.
|
||||
*/
|
||||
static int bpf_obj_name_cpy(char *dst, const char *src)
|
||||
int bpf_obj_name_cpy(char *dst, const char *src, unsigned int size)
|
||||
{
|
||||
const char *end = src + BPF_OBJ_NAME_LEN;
|
||||
const char *end = src + size;
|
||||
const char *orig_src = src;
|
||||
|
||||
memset(dst, 0, BPF_OBJ_NAME_LEN);
|
||||
memset(dst, 0, size);
|
||||
/* Copy all isalnum(), '_' and '.' chars. */
|
||||
while (src < end && *src) {
|
||||
if (!isalnum(*src) &&
|
||||
@@ -705,11 +706,11 @@ static int bpf_obj_name_cpy(char *dst, const char *src)
|
||||
*dst++ = *src++;
|
||||
}
|
||||
|
||||
/* No '\0' found in BPF_OBJ_NAME_LEN number of bytes */
|
||||
/* No '\0' found in "size" number of bytes */
|
||||
if (src == end)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
return src - orig_src;
|
||||
}
|
||||
|
||||
int map_check_no_btf(const struct bpf_map *map,
|
||||
@@ -803,8 +804,9 @@ static int map_create(union bpf_attr *attr)
|
||||
if (IS_ERR(map))
|
||||
return PTR_ERR(map);
|
||||
|
||||
err = bpf_obj_name_cpy(map->name, attr->map_name);
|
||||
if (err)
|
||||
err = bpf_obj_name_cpy(map->name, attr->map_name,
|
||||
sizeof(attr->map_name));
|
||||
if (err < 0)
|
||||
goto free_map;
|
||||
|
||||
atomic64_set(&map->refcnt, 1);
|
||||
@@ -2102,8 +2104,9 @@ static int bpf_prog_load(union bpf_attr *attr, union bpf_attr __user *uattr)
|
||||
goto free_prog;
|
||||
|
||||
prog->aux->load_time = ktime_get_boottime_ns();
|
||||
err = bpf_obj_name_cpy(prog->aux->name, attr->prog_name);
|
||||
if (err)
|
||||
err = bpf_obj_name_cpy(prog->aux->name, attr->prog_name,
|
||||
sizeof(attr->prog_name));
|
||||
if (err < 0)
|
||||
goto free_prog;
|
||||
|
||||
/* run eBPF verifier */
|
||||
@@ -2987,7 +2990,7 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
||||
union bpf_attr __user *uattr)
|
||||
{
|
||||
struct bpf_prog_info __user *uinfo = u64_to_user_ptr(attr->info.info);
|
||||
struct bpf_prog_info info = {};
|
||||
struct bpf_prog_info info;
|
||||
u32 info_len = attr->info.info_len;
|
||||
struct bpf_prog_stats stats;
|
||||
char __user *uinsns;
|
||||
@@ -2999,6 +3002,7 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
||||
return err;
|
||||
info_len = min_t(u32, sizeof(info), info_len);
|
||||
|
||||
memset(&info, 0, sizeof(info));
|
||||
if (copy_from_user(&info, uinfo, info_len))
|
||||
return -EFAULT;
|
||||
|
||||
@@ -3262,7 +3266,7 @@ static int bpf_map_get_info_by_fd(struct bpf_map *map,
|
||||
union bpf_attr __user *uattr)
|
||||
{
|
||||
struct bpf_map_info __user *uinfo = u64_to_user_ptr(attr->info.info);
|
||||
struct bpf_map_info info = {};
|
||||
struct bpf_map_info info;
|
||||
u32 info_len = attr->info.info_len;
|
||||
int err;
|
||||
|
||||
@@ -3271,6 +3275,7 @@ static int bpf_map_get_info_by_fd(struct bpf_map *map,
|
||||
return err;
|
||||
info_len = min_t(u32, sizeof(info), info_len);
|
||||
|
||||
memset(&info, 0, sizeof(info));
|
||||
info.type = map->map_type;
|
||||
info.id = map->id;
|
||||
info.key_size = map->key_size;
|
||||
@@ -3561,7 +3566,7 @@ err_put:
|
||||
|
||||
SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
|
||||
{
|
||||
union bpf_attr attr = {};
|
||||
union bpf_attr attr;
|
||||
int err;
|
||||
|
||||
if (sysctl_unprivileged_bpf_disabled && !capable(CAP_SYS_ADMIN))
|
||||
@@ -3573,6 +3578,7 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz
|
||||
size = min_t(u32, size, sizeof(attr));
|
||||
|
||||
/* copy attributes from user space, may be less than sizeof(bpf_attr) */
|
||||
memset(&attr, 0, sizeof(attr));
|
||||
if (copy_from_user(&attr, uattr, size) != 0)
|
||||
return -EFAULT;
|
||||
|
||||
|
Reference in New Issue
Block a user