Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp2375658pja; Thu, 26 Mar 2020 14:12:33 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvLjhJS0cnibD5Mt8xYH2zB5/WWQmsphpI5IsB1cNEI8BktiNfuDYevLyNcGV3xOGZFRHB5 X-Received: by 2002:aca:7213:: with SMTP id p19mr1753778oic.44.1585257152880; Thu, 26 Mar 2020 14:12:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585257152; cv=none; d=google.com; s=arc-20160816; b=ipHfJ6Bd2QdfmiIgSe9pVqAnOVL3ebHOLXqG/iOZups2Ry5RdBcfejjpsh2n2zX6ol OA9twB/kTEhEz5se9SS0FOTyA61Tl4E91K9DM8Gu8zjIbJ85Vnx9H8vrbKy/TttM0VWV FerlasAcn/mhy6MA9sEi8Ct0byiAM0eDdIm6SLWRtFtSuCgBTiVZOhHhdLFN9HxoT54k NLLnIj0altbYzSBSsEnsvpGjAVUZUjbdbA6YlqA9OOZkLdkVKrEOL8xv/arYIPHWUUL9 PJHdJLgkpCY/mljIG3DmxJy3NJzZmWDNOjya4PzKP5aEukNnTFEs7XGcKfrDkHA6FB9s mjyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=eLfTtrwRje07AWDZpn09mSkvQBzmIq1oo7oviI8+vjc=; b=FcjXZmb4k+VQf5JXR/JfI1ipI/9i8WJrh59fIABMYEAenQVPFHcIaC3ju/nAXcJIzm Okgw0fal8Y/RKKYAexrRrXMGK/FXeGIUgm1QY+CHZzK2KV2U8tPXWinK0WDwo6logpyv s693aC/9cnYZpD//pXZGijExGUaRkEDgSw64fru9PkYOB5qjwIRgIaSdiT2kbG0C8M5A gBLw/yZKQaOypwQrU6gtMfZVbdaVRgi8+DY3puQWT9yKKIgQp+6oeyp1gpLzHvTfuVdB ei/nW0aATOj0sywXot2KTicb+9VIjchLZuUwLJ8CDMDk6ud8W4YZcAdTazmkJ2eyS5Z3 gKhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=D+Zaouzy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n1si961205otf.299.2020.03.26.14.12.20; Thu, 26 Mar 2020 14:12:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=D+Zaouzy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728188AbgCZVLc (ORCPT + 99 others); Thu, 26 Mar 2020 17:11:32 -0400 Received: from mail-qt1-f194.google.com ([209.85.160.194]:35796 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727923AbgCZVLa (ORCPT ); Thu, 26 Mar 2020 17:11:30 -0400 Received: by mail-qt1-f194.google.com with SMTP id e14so6866476qts.2; Thu, 26 Mar 2020 14:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=eLfTtrwRje07AWDZpn09mSkvQBzmIq1oo7oviI8+vjc=; b=D+ZaouzyWVkeh/tg2dxEGWI7lSrEKuZRVvZEJXqhdsJYjYF6RuDFv+iCeZNu/uR1aB CtuCXafg+nGox7cQ22IfUNRqiqD2eys6MR6PcJco/tRujHNvGWBS4fSUoRF9/kL/oYw4 VDfuB/0+7kue2+2XiOc3MM1dY6qw7aCEpUM4WdjrlYxx5NYU4tB18mqE8MRZY18mggsM /6XpUUS3xzqb1KwBbccYiHZt6XfJw+YeAXDw/p6pMMNMEGv8McwmCEOZIXZfMT6RYy5m L/NIp3AGqJGLx0WsdICv803j7LLROT+dOBSWJHdyrpiHI8JRgKICreGaE87pUK5LG9jH bs0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=eLfTtrwRje07AWDZpn09mSkvQBzmIq1oo7oviI8+vjc=; b=p4A3nCjWjoATPcqAW4SZYeuXcEEemboz77ULo5fc5HhUhcntON2GB1mySVeSSDU2Xw +SPODOVv1npvTnS7LG/eqdcaGXbxInaelmFRriTNZL4s4JRWoNexWIMPQa9Z7kETkYnz o5c9WOvuYPRCiYcjwkr8rEvSEvr9qpVN55ACOQ8asjIa2BUt0u2uSwGJ2/7mUTVOg9kf RLCnsMLoYzpZWT2Tj2wNrqqMoWRTWOj3kn8eQnSDQdp0RVSxqgpTzsTjO00lS6af0aeN Il/IX6OnHqPGlFbbFkMtWlcPkbuR6T0veNo9yAlXAW8XRdCvueskWkD9A3LuNbkNcD9R J95g== X-Gm-Message-State: ANhLgQ3sTCZHxgh4vMu67HNcEUMdvpjgjm8b+v+daH3dkcNHKRp8MwXQ YkwrW67YPvS6e1i8HqrqVJE= X-Received: by 2002:aed:21c5:: with SMTP id m5mr10717014qtc.42.1585257088466; Thu, 26 Mar 2020 14:11:28 -0700 (PDT) Received: from ?IPv6:2601:282:803:7700:69d5:d817:1ef6:d239? ([2601:282:803:7700:69d5:d817:1ef6:d239]) by smtp.googlemail.com with ESMTPSA id h138sm2144030qke.86.2020.03.26.14.11.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 26 Mar 2020 14:11:27 -0700 (PDT) Subject: Re: [PATCH] kernel/taskstats: fix wrong nla type for {cgroup,task}stats policy To: Johannes Berg , Andrew Morton , Yafang Shao Cc: bsingharora@gmail.com, linux-kernel@vger.kernel.org, stable@vger.kernel.org, "David S.Miller" References: <1585191042-9935-1-git-send-email-laoar.shao@gmail.com> <20200326130808.ccbacd6cba99a40326936fea@linux-foundation.org> From: David Ahern Message-ID: Date: Thu, 26 Mar 2020 15:11:21 -0600 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/26/20 2:28 PM, Johannes Berg wrote: > > And looking at this ... well, that code is completely wrong? > > E.g. > > rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET, > cmd_type, &tid, sizeof(__u32)); > > (cmd_type is one of TASKSTATS_CMD_ATTR_TGID, TASKSTATS_CMD_ATTR_PID) > > or it might do > > rc = send_cmd(nl_sd, id, mypid, CGROUPSTATS_CMD_GET, > CGROUPSTATS_CMD_ATTR_FD, &cfd, sizeof(__u32)); > > so clearly it wants to produce a u32 attribute. > > But then > > static int send_cmd(int sd, __u16 nlmsg_type, __u32 nlmsg_pid, > __u8 genl_cmd, __u16 nla_type, > void *nla_data, int nla_len) > { > ... > > na = (struct nlattr *) GENLMSG_DATA(&msg); > > // this is still fine > > na->nla_type = nla_type; > > // this is also fine > > na->nla_len = nla_len + 1 + NLA_HDRLEN; > > // but this??? the nla_len of a netlink attribute should just be > // the len ... what's NLA_HDRLEN doing here? this isn't nested > // here we end up just reserving 1+NLA_HDRLEN too much space > > memcpy(NLA_DATA(na), nla_data, nla_len); > > // but then it anyway only fills the first nla_len bytes, which > // is just like a regular attribute. > > msg.n.nlmsg_len += NLMSG_ALIGN(na->nla_len); > // note that this is also wrong - it should be > // += NLA_ALIGN(NLA_HDRLEN + nla_len) > > > > So really I think what happened here is precisely what we wanted - > David's kernel patch caught the broken userspace tool. agreed. The tool needs to be fixed, not the kernel policy. I do not get the error message with this change as Johannes points out above: diff --git a/tools/accounting/getdelays.c b/tools/accounting/getdelays.c index 8cb504d30384..e90fd133df0e 100644 --- a/tools/accounting/getdelays.c +++ b/tools/accounting/getdelays.c @@ -136,7 +136,7 @@ static int send_cmd(int sd, __u16 nlmsg_type, __u32 nlmsg_pid, msg.g.version = 0x1; na = (struct nlattr *) GENLMSG_DATA(&msg); na->nla_type = nla_type; - na->nla_len = nla_len + 1 + NLA_HDRLEN; + na->nla_len = nla_len + NLA_HDRLEN; memcpy(NLA_DATA(na), nla_data, nla_len); msg.n.nlmsg_len += NLMSG_ALIGN(na->nla_len);