mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [RESEND PATCH v4 0/2] change the proc handler for nsm_use_hostnames
@ 2016-12-14  2:49 Jia He
  2016-12-14  2:49 ` [RESEND PATCH v4 1/2] sysctl: introduce new proc handler proc_dobool Jia He
  2016-12-14  2:49 ` [RESEND PATCH v4 2/2] lockd: change the proc_handler for nsm_use_hostnames Jia He
  0 siblings, 2 replies; 5+ messages in thread
From: Jia He @ 2016-12-14  2:49 UTC (permalink / raw)
  To: linux-kernel, linux-nfs
  Cc: Eric W. Biederman, Andrew Morton, Dmitry Torokhov, Serge Hallyn,
	David S. Miller, Alexey Dobriyan, Subash Abhinov Kasiviswanathan,
	Arnaldo Carvalho de Melo, Al Viro, Mel Gorman, Kees Cook,
	Hugh Dickins, Daniel Bristot de Oliveira, Daniel Cashman,
	Arnd Bergmann, J. Bruce Fields, Jeff Layton, Trond Myklebust,
	Anna Schumaker, Jia He

Resend the v4 since I didn't add --to=linux-kernel@vger.kernel.org,sorry about
it

nsm_use_hostnames is a module parameter and it will be exported to sysctl
procfs. This is to let user sometimes change it from userspace. But the
minimal unit for sysctl procfs read/write it sizeof(int).
In big endian system, the converting from/to  bool to/from int will cause
error for proc items.

This patch introduces a new proc handler proc_dobool for nsm_use_hostnames.

Changes:
v4: Change (u8 *) to (bool *)
v3: Introduce a new proc handler proc_dou8vec(suggested by Xinhui Pan)
v2: Change extern type in lockd.h

The test case I used:
/***************************************************************/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sysctl.h>

bool __read_mostly nsm_use_hostnames;
module_param(nsm_use_hostnames, bool, 0644);

static struct ctl_table my_sysctl[] = {
        {
                .procname       = "nsm_use_hostnames",
                .data           = &nsm_use_hostnames,
                .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = &proc_dointvec,
        },
        {}
};

static struct ctl_table my_root[] = {
        {
        .procname       = "mysysctl",
        .mode           = 0555,
        .child          = my_sysctl,
        },
        {}
};

static struct ctl_table_header * my_ctl_header;

static int __init sysctl_exam_init(void)
{
        my_ctl_header = register_sysctl_table(&my_root);
        if (my_ctl_header == NULL)
                printk("error regiester sysctl");

        return 0;
}

static void __exit sysctl_exam_exit(void)
{
        unregister_sysctl_table(my_ctl_header);
}

module_init(sysctl_exam_init);
module_exit(sysctl_exam_exit);
MODULE_LICENSE("GPL");
/****************************************************************/

[root@bigendian my]# insmod -f /root/my/hello.ko nsm_use_hostnames=1   
[root@bigendian my]# cat /proc/sys/mysysctl/nsm_use_hostnames 
16777216

After I change the proc_dointvec to new handler proc_dou8vec with the
patch:
[root@bigendian my]# insmod -f /root/my/hello.ko nsm_use_hostnames=1
[root@bigendian my]# cat /proc/sys/mysysctl/nsm_use_hostnames
1

In little endian system, there is no such issue.
Already tested v4 in both of big and little endian(ppc64 and ppc64le)

Jia He (2):
  sysctl: introduce new proc handler proc_dobool
  lockd: change the proc_handler for nsm_use_hostnames

 fs/lockd/svc.c         |  2 +-
 include/linux/sysctl.h |  2 ++
 kernel/sysctl.c        | 35 +++++++++++++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)

-- 
2.5.5

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-12-14  9:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-14  2:49 [RESEND PATCH v4 0/2] change the proc handler for nsm_use_hostnames Jia He
2016-12-14  2:49 ` [RESEND PATCH v4 1/2] sysctl: introduce new proc handler proc_dobool Jia He
2016-12-14  6:13   ` kbuild test robot
2016-12-14  9:14     ` hejianet
2016-12-14  2:49 ` [RESEND PATCH v4 2/2] lockd: change the proc_handler for nsm_use_hostnames Jia He

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®