On Monday 23 November 2015 23:52:58 Amitoj Kaur Chawla wrote:
32 bit systems using 'struct timeval' will break in the year 2038, so we modify the code appropriately.
This patch replaces the use of struct timeval and do_gettimeofday() with ktime_get_real_seconds() which returns a 64 bit value which is safer than struct timeval.
Signed-off-by: Amitoj Kaur Chawla amitoj1606@gmail.com
The comment doesn't match what the patch does:
diff --git a/drivers/scsi/bfa/bfa_svc.c b/drivers/scsi/bfa/bfa_svc.c index 6521896..0240554 100644 --- a/drivers/scsi/bfa/bfa_svc.c +++ b/drivers/scsi/bfa/bfa_svc.c @@ -3424,13 +3424,10 @@ __bfa_cb_fcport_stats_clr(void *cbarg, bfa_boolean_t complete) struct list_head *qe, *qen; if (complete) {
struct timeval tv;
/* * re-initialize time stamp for stats reset */
do_gettimeofday(&tv);
fcport->stats_reset_time = tv.tv_sec;
fcport->stats_reset_time = ktime_get_seconds(); list_for_each_safe(qe, qen, &fcport->statsclr_pending_q) { bfa_q_deq(&fcport->statsclr_pending_q, &qe); cb = (struct bfa_cb_pending_q_s *)qe;
You use ktime_get_seconds() rather than ktime_get_real_seconds(), and you don't store the result in a 64-bit variable, so the range extension doesn't work. This is ok if all uses of the variable are changed to monotonic time, but in this case they are not:
From looking at the uses of stats_reset_time, it seems that you need to change
__bfa_cb_fcport_stats_get at the same time.
Arnd