On Tue, Nov 3, 2015 at 4:17 PM, Arnd Bergmann arnd@arndb.de wrote:
On Tuesday 27 October 2015 09:10:45 Ksenija Stanojevic wrote:
Replace time_t type and get_seconds function which are not y2038 safe on 32-bit systems. Function ktime_get_seconds use monotonic instead of real time and therefore will not cause overflow.
Signed-off-by: Ksenija Stanojevic ksenija.stanojevic@gmail.com
I think this patch needs to be folded into the patch that changes the type for nfsd4_lease, as mentioned there.
locks_start_grace(net, &nn->nfsd4_manager); nfsd4_client_tracking_init(net);
printk(KERN_INFO "NFSD: starting %ld-second grace period (net %p)\n",
printk(KERN_INFO "NFSD: starting %x-second grace period (net %p)\n", nn->nfsd4_grace, net); queue_delayed_work(laundry_wq, &nn->laundromat_work, nn->nfsd4_grace * HZ);
return scnprintf(buf, SIMPLE_TRANSACTION_LIMIT, "%ld\n", *time);
return scnprintf(buf, (u32)SIMPLE_TRANSACTION_LIMIT, "%x\n", *time);
}
static ssize_t nfsd4_write_time(struct file *file, char *buf, size_t size,
You change the format string to print the time as hexadecimal. Is that intentional? If there is a reason for doing it, explain it in the changelog, otherwise leave it as "%d".
The cast of SIMPLE_TRANSACTION_LIMIT to u32 looks misplaced as well.
I got following warnings with original code and I was trying to fix them: include/linux/fs.h:2908:61: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘u32’ [-Wformat=] #define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp)) ^ fs/nfsd/nfsctl.c:963:24: note: in expansion of macro ‘SIMPLE_TRANSACTION_LIMIT’ return scnprintf(buf, SIMPLE_TRANSACTION_LIMIT, "%ld\n", *time);
but I see now that changing %ld to %d works as well.
Thanks, Ksenija