lkml.org 
[lkml]   [2020]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 10/61] net-sysfs: Call dev_hold always in rx_queue_add_kobject
    3.16.85-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jouni Hogander <jouni.hogander@unikie.com>

    commit ddd9b5e3e765d8ed5a35786a6cb00111713fe161 upstream.

    Dev_hold has to be called always in rx_queue_add_kobject.
    Otherwise usage count drops below 0 in case of failure in
    kobject_init_and_add.

    Fixes: b8eb718348b8 ("net-sysfs: Fix reference count leak in rx|netdev_queue_add_kobject")
    Reported-by: syzbot <syzbot+30209ea299c09d8785c9@syzkaller.appspotmail.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: David Miller <davem@davemloft.net>
    Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
    Signed-off-by: Jouni Hogander <jouni.hogander@unikie.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    net/core/net-sysfs.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    --- a/net/core/net-sysfs.c
    +++ b/net/core/net-sysfs.c
    @@ -782,14 +782,17 @@ static int rx_queue_add_kobject(struct n
    struct kobject *kobj = &queue->kobj;
    int error = 0;

    + /* Kobject_put later will trigger rx_queue_release call which
    + * decreases dev refcount: Take that reference here
    + */
    + dev_hold(queue->dev);
    +
    kobj->kset = net->queues_kset;
    error = kobject_init_and_add(kobj, &rx_queue_ktype, NULL,
    "rx-%u", index);
    if (error)
    goto err;

    - dev_hold(queue->dev);
    -
    if (net->sysfs_rx_queue_group) {
    error = sysfs_create_group(kobj, net->sysfs_rx_queue_group);
    if (error)
    \
     
     \ /
      Last update: 2020-06-09 20:10    [W:4.039 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site