| From de5b8e8e047534aac6bc9803f96e7257436aef9c Mon Sep 17 00:00:00 2001 |
| From: NeilBrown <neilb@suse.de> |
| Date: Tue, 7 Feb 2012 15:35:42 +1100 |
| Subject: lockd: fix arg parsing for grace_period and timeout. |
| |
| From: NeilBrown <neilb@suse.de> |
| |
| commit de5b8e8e047534aac6bc9803f96e7257436aef9c upstream. |
| |
| If you try to set grace_period or timeout via a module parameter |
| to lockd, and do this on a big-endian machine where |
| |
| sizeof(int) != sizeof(unsigned long) |
| |
| it won't work. This number given will be effectively shifted right |
| by the difference in those two sizes. |
| |
| So cast kp->arg properly to get correct result. |
| |
| Signed-off-by: NeilBrown <neilb@suse.de> |
| Signed-off-by: J. Bruce Fields <bfields@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/lockd/svc.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/lockd/svc.c |
| +++ b/fs/lockd/svc.c |
| @@ -440,7 +440,7 @@ static int param_set_##name(const char * |
| __typeof__(type) num = which_strtol(val, &endp, 0); \ |
| if (endp == val || *endp || num < (min) || num > (max)) \ |
| return -EINVAL; \ |
| - *((int *) kp->arg) = num; \ |
| + *((type *) kp->arg) = num; \ |
| return 0; \ |
| } |
| |