From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7191674309833820568==" MIME-Version: 1.0 From: kbuild test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH 1/3] kernel/sysctl: support setting sysctl parameters from kernel command line Date: Tue, 31 Mar 2020 04:15:44 +0800 Message-ID: <202003310441.rvGTgRBw%lkp@intel.com> In-Reply-To: <20200330115535.3215-2-vbabka@suse.cz> List-Id: --===============7191674309833820568== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Vlastimil, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on kees/for-next/pstore] [also build test WARNING on linus/master linux/master v5.6 next-20200330] [if your patch is applied to the wrong git tree, please drop us a note to h= elp improve the system. BTW, we also suggest to use '--base' option to specify = the base tree in git format-patch, please see https://stackoverflow.com/a/37406= 982] url: https://github.com/0day-ci/linux/commits/Vlastimil-Babka/support-se= tting-sysctl-parameters-from-kernel-command-line/20200331-023453 base: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-= next/pstore config: um-i386_defconfig (attached as .config) compiler: gcc-7 (Debian 7.4.0-6) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=3Dum SUBARCH=3Di386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All warnings (new ones prefixed by >>): In file included from include/linux/printk.h:7:0, from include/linux/kernel.h:15, from include/linux/list.h:9, from include/linux/sysctl.h:25, from fs/proc/proc_sysctl.c:6: fs/proc/proc_sysctl.c: In function 'process_sysctl_arg': include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument= of type 'long int', but argument 2 has type 'ssize_t {aka int}' [-Wformat= =3D] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH' #define KERN_ERR KERN_SOH "3" /* error conditions */ ^~~~~~~~ include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR' printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~ >> fs/proc/proc_sysctl.c:1798:3: note: in expansion of macro 'pr_err' pr_err("Wrote only %ld bytes of %d writing to proc file %s to set sys= ctl parameter '%s=3D%s'", ^~~~~~ fs/proc/proc_sysctl.c:1798:24: note: format string is defined here pr_err("Wrote only %ld bytes of %d writing to proc file %s to set sys= ctl parameter '%s=3D%s'", ~~^ %d vim +/pr_err +1798 fs/proc/proc_sysctl.c 1729 = 1730 /* Set sysctl value passed on kernel command line. */ 1731 static int process_sysctl_arg(char *param, char *val, 1732 const char *unused, void *arg) 1733 { 1734 char *path; 1735 struct vfsmount *proc_mnt =3D *((struct vfsmount **)arg); 1736 struct file_system_type *proc_fs_type; 1737 struct file *file; 1738 int len; 1739 int err; 1740 loff_t pos =3D 0; 1741 ssize_t wret; 1742 = 1743 if (strncmp(param, "sysctl", sizeof("sysctl") - 1)) 1744 return 0; 1745 = 1746 param +=3D sizeof("sysctl") - 1; 1747 = 1748 if (param[0] !=3D '/' && param[0] !=3D '.') 1749 return 0; 1750 = 1751 param++; 1752 = 1753 if (!proc_mnt) { 1754 proc_fs_type =3D get_fs_type("proc"); 1755 if (!proc_fs_type) { 1756 pr_err("Failed to find procfs to set sysctl from command line"); 1757 return 0; 1758 } 1759 proc_mnt =3D kern_mount(proc_fs_type); 1760 put_filesystem(proc_fs_type); 1761 if (IS_ERR(proc_mnt)) { 1762 pr_err("Failed to mount procfs to set sysctl from command line"); 1763 return 0; 1764 } 1765 *((struct vfsmount **)arg) =3D proc_mnt; 1766 } 1767 = 1768 path =3D kasprintf(GFP_KERNEL, "sys/%s", param); 1769 if (!path) 1770 panic("%s: Failed to allocate path for %s\n", __func__, param); 1771 strreplace(path, '.', '/'); 1772 = 1773 file =3D file_open_root(proc_mnt->mnt_root, proc_mnt, path, O_WRONL= Y, 0); 1774 if (IS_ERR(file)) { 1775 err =3D PTR_ERR(file); 1776 if (err =3D=3D -ENOENT) 1777 pr_err("Failed to set sysctl parameter '%s=3D%s': parameter not f= ound", 1778 param, val); 1779 else if (err =3D=3D -EACCES) 1780 pr_err("Failed to set sysctl parameter '%s=3D%s': permission deni= ed (read-only?)", 1781 param, val); 1782 else 1783 pr_err("Error %pe opening proc file to set sysctl parameter '%s= =3D%s'", 1784 file, param, val); 1785 goto out; 1786 } 1787 len =3D strlen(val); 1788 wret =3D kernel_write(file, val, len, &pos); 1789 if (wret < 0) { 1790 err =3D wret; 1791 if (err =3D=3D -EINVAL) 1792 pr_err("Failed to set sysctl parameter '%s=3D%s': invalid value", 1793 param, val); 1794 else 1795 pr_err("Error %pe writing to proc file to set sysctl parameter '%= s=3D%s'", 1796 ERR_PTR(err), param, val); 1797 } else if (wret !=3D len) { > 1798 pr_err("Wrote only %ld bytes of %d writing to proc file %s to set = sysctl parameter '%s=3D%s'", 1799 wret, len, path, param, val); 1800 } 1801 = 1802 err =3D filp_close(file, NULL); 1803 if (err) 1804 pr_err("Error %pe closing proc file to set sysctl parameter '%s=3D= %s'", 1805 ERR_PTR(err), param, val); 1806 out: 1807 kfree(path); 1808 return 0; 1809 } 1810 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============7191674309833820568== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 3XJmU+bN/wF2yNs/44UAAA== --===============7191674309833820568==--