[PATCH v2 0/8] Add kvzalloc_struct to complement kvzalloc_array

2018-02-14 Thread Matthew Wilcox
From: Matthew Wilcox 

We all know the perils of multiplying a value provided from userspace
by a constant and then allocating the resulting number of bytes.  That's
why we have kvmalloc_array(), so we don't have to think about it.
This solves the same problem when we embed one of these arrays in a
struct like this:

struct {
int n;
unsigned long array[];
};

Using kvzalloc_struct() to allocate this will save precious thinking
time and reduce the possibilities of bugs.

v2: Minor fixes pointed out by Kees
Added sample conversions

I added a few more sample conversions for demonstration purposes, and
one thing I noticed is that the kvmalloc family of functions live in
 which (contrary to popular belief) is not already
automatically included everywhere.

Should they be moved to slab.h to be with kmalloc, a new file
(malloc.h? kvmalloc.h?), or even kernel.h?

Matthew Wilcox (8):
  mm: Add kernel-doc for kvfree
  mm: Add kvmalloc_ab_c and kvzalloc_struct
  Convert virtio_console to kvzalloc_struct
  Convert dax device to kvzalloc_struct
  Convert infiniband uverbs to kvzalloc_struct
  Convert v4l2 event to kvzalloc_struct
  Convert vhost to kvzalloc_struct
  Convert jffs2 acl to kvzalloc_struct

 drivers/char/virtio_console.c|  3 +--
 drivers/dax/device.c |  2 +-
 drivers/infiniband/core/uverbs_cmd.c |  4 +--
 drivers/media/v4l2-core/v4l2-event.c |  3 +--
 drivers/vhost/vhost.c|  2 +-
 fs/jffs2/acl.c   |  3 ++-
 fs/jffs2/acl.h   |  1 +
 include/linux/mm.h   | 51 
 include/rdma/ib_verbs.h  |  5 +---
 mm/util.c| 10 +++
 10 files changed, 71 insertions(+), 13 deletions(-)

-- 
2.15.1



[PATCH v2 0/8] Add kvzalloc_struct to complement kvzalloc_array

2018-02-14 Thread Matthew Wilcox
From: Matthew Wilcox 

We all know the perils of multiplying a value provided from userspace
by a constant and then allocating the resulting number of bytes.  That's
why we have kvmalloc_array(), so we don't have to think about it.
This solves the same problem when we embed one of these arrays in a
struct like this:

struct {
int n;
unsigned long array[];
};

Using kvzalloc_struct() to allocate this will save precious thinking
time and reduce the possibilities of bugs.

v2: Minor fixes pointed out by Kees
Added sample conversions

I added a few more sample conversions for demonstration purposes, and
one thing I noticed is that the kvmalloc family of functions live in
 which (contrary to popular belief) is not already
automatically included everywhere.

Should they be moved to slab.h to be with kmalloc, a new file
(malloc.h? kvmalloc.h?), or even kernel.h?

Matthew Wilcox (8):
  mm: Add kernel-doc for kvfree
  mm: Add kvmalloc_ab_c and kvzalloc_struct
  Convert virtio_console to kvzalloc_struct
  Convert dax device to kvzalloc_struct
  Convert infiniband uverbs to kvzalloc_struct
  Convert v4l2 event to kvzalloc_struct
  Convert vhost to kvzalloc_struct
  Convert jffs2 acl to kvzalloc_struct

 drivers/char/virtio_console.c|  3 +--
 drivers/dax/device.c |  2 +-
 drivers/infiniband/core/uverbs_cmd.c |  4 +--
 drivers/media/v4l2-core/v4l2-event.c |  3 +--
 drivers/vhost/vhost.c|  2 +-
 fs/jffs2/acl.c   |  3 ++-
 fs/jffs2/acl.h   |  1 +
 include/linux/mm.h   | 51 
 include/rdma/ib_verbs.h  |  5 +---
 mm/util.c| 10 +++
 10 files changed, 71 insertions(+), 13 deletions(-)

-- 
2.15.1