Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp325561ybk; Wed, 20 May 2020 00:12:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqMa7zikr1/qUHX41JQ9mXJ2NmUES/lY+mOo2AHPHbQ7C9i1EZMJ/Q4PFHbxEC8rToSHy7 X-Received: by 2002:a17:906:2ac6:: with SMTP id m6mr2529874eje.234.1589958735012; Wed, 20 May 2020 00:12:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589958735; cv=none; d=google.com; s=arc-20160816; b=uH2ZKOUBlN1rZEFO13q6eia8e8bGlkdR/BNZS4+S8IDLNPJt0bj0nZhX+juUsT7/EK ejofymreRsbT5PuiRohw8Q0QjGt4uNUBo6ZPxpDWu/alk7loh6V6+rewadgXXsPtH2vV 59pTwdip7jP3k/+GuMtqnfwAQ7Zbq0ITI6j3OTbDyUzKxCSl4Oi7eBzR011yzHXsN3Lh VAEnmorz6Q2tYUPCAn2TpCuRJpzhwZ9NUSNvKMdnMnJsopBRmn+2D2v4BMu4Imq1+nyE J9dv86dGUCCE77M08x0WE+AmUr1fpIX70IMSMrISgkjeHwcKwcWQwgiB+5Y4fvvyAguc xeDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from; bh=IfZxyyADPGngSrFo9F002eWWbeT6pvUZhHCTrOXWlt4=; b=0FlvYlYlzqT8LwtzQibJdqN6TqrOw5yuqq6kOsKi16G8+f1dj2he53ulr6GYhuV8f4 leGjQB9mdzBGD3T3UIb0JAYU6hlbeo/0wgz3mr3hf3vQDLbWmw1byuHl6ZlSasXCM2Cx fTAqxYlchsPqDfokE5feNp7FeeEgClIXL649KOS3iVyBHkPVXTjBFy2Hi0frwnHMzZUh hXOXpFt3pss/jSF2znEaAWbh2yUh+BIZm2aIQd+y/bPxaBsU9TgT1j1WaV/cU0kaD5Q1 c67Po58xGlp2hjzz+rONr0Yvk7aSHHS/phHJwv8xf34byDMBPSZ6Yn9sgTbyoD7n5vWq HCSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z93si1024912ede.208.2020.05.20.00.11.51; Wed, 20 May 2020 00:12:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726536AbgETHK2 (ORCPT + 99 others); Wed, 20 May 2020 03:10:28 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:8124 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726436AbgETHK2 (ORCPT ); Wed, 20 May 2020 03:10:28 -0400 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 04K73nDG020952; Wed, 20 May 2020 03:09:52 -0400 Received: from ppma01wdc.us.ibm.com (fd.55.37a9.ip4.static.sl-reverse.com [169.55.85.253]) by mx0a-001b2d01.pphosted.com with ESMTP id 312cqp1n84-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 May 2020 03:09:52 -0400 Received: from pps.filterd (ppma01wdc.us.ibm.com [127.0.0.1]) by ppma01wdc.us.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 04K6ofHd026781; Wed, 20 May 2020 07:09:50 GMT Received: from b03cxnp08028.gho.boulder.ibm.com (b03cxnp08028.gho.boulder.ibm.com [9.17.130.20]) by ppma01wdc.us.ibm.com with ESMTP id 313wn8gngg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 May 2020 07:09:50 +0000 Received: from b03ledav001.gho.boulder.ibm.com (b03ledav001.gho.boulder.ibm.com [9.17.130.232]) by b03cxnp08028.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 04K79oJs21692726 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 20 May 2020 07:09:50 GMT Received: from b03ledav001.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E08E76E04C; Wed, 20 May 2020 07:09:49 +0000 (GMT) Received: from b03ledav001.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7024D6E052; Wed, 20 May 2020 07:09:47 +0000 (GMT) Received: from skywalker.linux.ibm.com (unknown [9.85.85.147]) by b03ledav001.gho.boulder.ibm.com (Postfix) with ESMTP; Wed, 20 May 2020 07:09:47 +0000 (GMT) X-Mailer: emacs 27.0.91 (via feedmail 11-beta-1 I) From: "Aneesh Kumar K.V" To: Vaibhav Jain , linuxppc-dev@lists.ozlabs.org, linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org Cc: Vaibhav Jain , Michael Ellerman , Steven Rostedt Subject: Re: [RESEND PATCH v7 4/5] ndctl/papr_scm,uapi: Add support for PAPR nvdimm specific methods In-Reply-To: <20200519190058.257981-5-vaibhav@linux.ibm.com> References: <20200519190058.257981-1-vaibhav@linux.ibm.com> <20200519190058.257981-5-vaibhav@linux.ibm.com> Date: Wed, 20 May 2020 12:39:43 +0530 Message-ID: <87a723f5fs.fsf@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216,18.0.676 definitions=2020-05-20_03:2020-05-19,2020-05-20 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 adultscore=0 mlxscore=0 impostorscore=0 mlxlogscore=939 malwarescore=0 suspectscore=0 lowpriorityscore=0 clxscore=1011 cotscore=-2147483648 spamscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2005200056 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Vaibhav Jain writes: .... + > +/* Papr-scm-header + payload expected with ND_CMD_CALL ioctl from libnvdimm */ > +struct nd_pdsm_cmd_pkg { > + struct nd_cmd_pkg hdr; /* Package header containing sub-cmd */ > + __s32 cmd_status; /* Out: Sub-cmd status returned back */ > + __u16 payload_offset; /* In: offset from start of struct */ > + __u16 payload_version; /* In/Out: version of the payload */ > + __u8 payload[]; /* In/Out: Sub-cmd data buffer */ > +} __packed; that payload_offset can be avoided if we prevent userspace to user a different variant of nd_pdsm_cmd_pkg which different header. We can keep things simpler if we can always find payload at nd_pdsm_cmd_pkg->payload. > + > +/* > + * Methods to be embedded in ND_CMD_CALL request. These are sent to the kernel > + * via 'nd_pdsm_cmd_pkg.hdr.nd_command' member of the ioctl struct > + */ > +enum papr_scm_pdsm { > + PAPR_SCM_PDSM_MIN = 0x0, > + PAPR_SCM_PDSM_MAX, > +}; > + > +/* Convert a libnvdimm nd_cmd_pkg to pdsm specific pkg */ > +static inline struct nd_pdsm_cmd_pkg *nd_to_pdsm_cmd_pkg(struct nd_cmd_pkg *cmd) > +{ > + return (struct nd_pdsm_cmd_pkg *) cmd; > +} > + > +/* Return the payload pointer for a given pcmd */ > +static inline void *pdsm_cmd_to_payload(struct nd_pdsm_cmd_pkg *pcmd) > +{ > + if (pcmd->hdr.nd_size_in == 0 && pcmd->hdr.nd_size_out == 0) > + return NULL; > + else > + return (void *)((__u8 *) pcmd + pcmd->payload_offset); > +} > + we need to make sure userspace is not passing a wrong payload_offset. and in the next patch you do + /* Copy the health struct to the payload */ + memcpy(pdsm_cmd_to_payload(pkg), &p->health, copysize); + pkg->hdr.nd_fw_size = copysize; + All this can be simplified if you can keep payload at nd_pdsm_cmd_pkg->payload. If you still want to have the ability to extend the header, then added a reserved field similar to nd_cmd_pkg. -aneesh