diff mbox series

isofs: prevent file time rollover after year 2038

Message ID 20221020160037.4002270-1-arnd@kernel.org (mailing list archive)
State New, archived
Headers show
Series isofs: prevent file time rollover after year 2038 | expand

Commit Message

Arnd Bergmann Oct. 20, 2022, 4 p.m. UTC
From: Thomas Schmitt <scdbackup@gmx.net>

Change the return type of function iso_date() from int to time64_t,
to avoid truncating to the 1902..2038 date range.

After this patch, the reported timestamps should fall into the
range reported in the s_time_min/s_time_max fields.

Signed-off-by: Thomas Schmitt <scdbackup@gmx.net>
Cc: stable@vger.kernel.org
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800627
Fixes: 34be4dbf87fc ("isofs: fix timestamps beyond 2027")
Fixes: 5ad32b3acded ("isofs: Initialize filesystem timestamp ranges")
[arnd: expand changelog text slightly]
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/isofs/isofs.h | 2 +-
 fs/isofs/util.c  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

Comments

Christian Brauner Oct. 21, 2022, 9:19 a.m. UTC | #1
On Thu, Oct 20, 2022 at 06:00:29PM +0200, Arnd Bergmann wrote:
> From: Thomas Schmitt <scdbackup@gmx.net>
> 
> Change the return type of function iso_date() from int to time64_t,
> to avoid truncating to the 1902..2038 date range.
> 
> After this patch, the reported timestamps should fall into the
> range reported in the s_time_min/s_time_max fields.
> 
> Signed-off-by: Thomas Schmitt <scdbackup@gmx.net>
> Cc: stable@vger.kernel.org
> Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800627
> Fixes: 34be4dbf87fc ("isofs: fix timestamps beyond 2027")
> Fixes: 5ad32b3acded ("isofs: Initialize filesystem timestamp ranges")
> [arnd: expand changelog text slightly]
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---

Looks good to me,
Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org>
Jeff Layton Oct. 21, 2022, 12:41 p.m. UTC | #2
On Thu, 2022-10-20 at 18:00 +0200, Arnd Bergmann wrote:
> From: Thomas Schmitt <scdbackup@gmx.net>
> 
> Change the return type of function iso_date() from int to time64_t,
> to avoid truncating to the 1902..2038 date range.
> 
> After this patch, the reported timestamps should fall into the
> range reported in the s_time_min/s_time_max fields.
> 
> Signed-off-by: Thomas Schmitt <scdbackup@gmx.net>
> Cc: stable@vger.kernel.org
> Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800627
> Fixes: 34be4dbf87fc ("isofs: fix timestamps beyond 2027")
> Fixes: 5ad32b3acded ("isofs: Initialize filesystem timestamp ranges")
> [arnd: expand changelog text slightly]
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  fs/isofs/isofs.h | 2 +-
>  fs/isofs/util.c  | 4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/isofs/isofs.h b/fs/isofs/isofs.h
> index dcdc191ed183..c3473ca3f686 100644
> --- a/fs/isofs/isofs.h
> +++ b/fs/isofs/isofs.h
> @@ -106,7 +106,7 @@ static inline unsigned int isonum_733(u8 *p)
>  	/* Ignore bigendian datum due to broken mastering programs */
>  	return get_unaligned_le32(p);
>  }
> -extern int iso_date(u8 *, int);
> +extern time64_t iso_date(u8 *, int);
>  
>  struct inode;		/* To make gcc happy */
>  
> diff --git a/fs/isofs/util.c b/fs/isofs/util.c
> index e88dba721661..348af786a8a4 100644
> --- a/fs/isofs/util.c
> +++ b/fs/isofs/util.c
> @@ -16,10 +16,10 @@
>   * to GMT.  Thus  we should always be correct.
>   */
>  
> -int iso_date(u8 *p, int flag)
> +time64_t iso_date(u8 *p, int flag)
>  {
>  	int year, month, day, hour, minute, second, tz;
> -	int crtime;
> +	time64_t crtime;
>  
>  	year = p[0];
>  	month = p[1];

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Jan Kara Oct. 24, 2022, 12:26 p.m. UTC | #3
On Thu 20-10-22 18:00:29, Arnd Bergmann wrote:
> From: Thomas Schmitt <scdbackup@gmx.net>
> 
> Change the return type of function iso_date() from int to time64_t,
> to avoid truncating to the 1902..2038 date range.
> 
> After this patch, the reported timestamps should fall into the
> range reported in the s_time_min/s_time_max fields.
> 
> Signed-off-by: Thomas Schmitt <scdbackup@gmx.net>
> Cc: stable@vger.kernel.org
> Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800627
> Fixes: 34be4dbf87fc ("isofs: fix timestamps beyond 2027")
> Fixes: 5ad32b3acded ("isofs: Initialize filesystem timestamp ranges")
> [arnd: expand changelog text slightly]
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thanks! I've added the patch to my tree and will push it to Linus.

								Honza

> ---
>  fs/isofs/isofs.h | 2 +-
>  fs/isofs/util.c  | 4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/isofs/isofs.h b/fs/isofs/isofs.h
> index dcdc191ed183..c3473ca3f686 100644
> --- a/fs/isofs/isofs.h
> +++ b/fs/isofs/isofs.h
> @@ -106,7 +106,7 @@ static inline unsigned int isonum_733(u8 *p)
>  	/* Ignore bigendian datum due to broken mastering programs */
>  	return get_unaligned_le32(p);
>  }
> -extern int iso_date(u8 *, int);
> +extern time64_t iso_date(u8 *, int);
>  
>  struct inode;		/* To make gcc happy */
>  
> diff --git a/fs/isofs/util.c b/fs/isofs/util.c
> index e88dba721661..348af786a8a4 100644
> --- a/fs/isofs/util.c
> +++ b/fs/isofs/util.c
> @@ -16,10 +16,10 @@
>   * to GMT.  Thus  we should always be correct.
>   */
>  
> -int iso_date(u8 *p, int flag)
> +time64_t iso_date(u8 *p, int flag)
>  {
>  	int year, month, day, hour, minute, second, tz;
> -	int crtime;
> +	time64_t crtime;
>  
>  	year = p[0];
>  	month = p[1];
> -- 
> 2.29.2
>
Jan Kara Oct. 24, 2022, 2:51 p.m. UTC | #4
On Mon 24-10-22 14:26:14, Jan Kara wrote:
> On Thu 20-10-22 18:00:29, Arnd Bergmann wrote:
> > From: Thomas Schmitt <scdbackup@gmx.net>
> > 
> > Change the return type of function iso_date() from int to time64_t,
> > to avoid truncating to the 1902..2038 date range.
> > 
> > After this patch, the reported timestamps should fall into the
> > range reported in the s_time_min/s_time_max fields.
> > 
> > Signed-off-by: Thomas Schmitt <scdbackup@gmx.net>
> > Cc: stable@vger.kernel.org
> > Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800627
> > Fixes: 34be4dbf87fc ("isofs: fix timestamps beyond 2027")
> > Fixes: 5ad32b3acded ("isofs: Initialize filesystem timestamp ranges")
> > [arnd: expand changelog text slightly]
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> Thanks! I've added the patch to my tree and will push it to Linus.

Oh, I have noticed Andrew has merged the patch already into his tree. So
dropped from mine.

								Honza
Andrew Morton Oct. 24, 2022, 8:55 p.m. UTC | #5
On Mon, 24 Oct 2022 16:51:21 +0200 Jan Kara <jack@suse.cz> wrote:

> > Thanks! I've added the patch to my tree and will push it to Linus.
> 
> Oh, I have noticed Andrew has merged the patch already into his tree. So
> dropped from mine.

You could have just added it and I'd drop my copy when Stephen tells
us of the duplicate.  But whatever.

Maybe you owe us an ISOFS MAINTAINERS entry ;)
Jan Kara Oct. 25, 2022, 9:26 a.m. UTC | #6
On Mon 24-10-22 13:55:17, Andrew Morton wrote:
> On Mon, 24 Oct 2022 16:51:21 +0200 Jan Kara <jack@suse.cz> wrote:
> 
> > > Thanks! I've added the patch to my tree and will push it to Linus.
> > 
> > Oh, I have noticed Andrew has merged the patch already into his tree. So
> > dropped from mine.
> 
> You could have just added it and I'd drop my copy when Stephen tells
> us of the duplicate.  But whatever.

Yeah, I know. But since I've just pulled the patch in I figured it's less
work if I just take it out as well ;)

> Maybe you owe us an ISOFS MAINTAINERS entry ;)

Yeah, I can see isofs currently has no entry in MAINTAINERS. OK, I'll add
some ;)

								Honza
diff mbox series

Patch

diff --git a/fs/isofs/isofs.h b/fs/isofs/isofs.h
index dcdc191ed183..c3473ca3f686 100644
--- a/fs/isofs/isofs.h
+++ b/fs/isofs/isofs.h
@@ -106,7 +106,7 @@  static inline unsigned int isonum_733(u8 *p)
 	/* Ignore bigendian datum due to broken mastering programs */
 	return get_unaligned_le32(p);
 }
-extern int iso_date(u8 *, int);
+extern time64_t iso_date(u8 *, int);
 
 struct inode;		/* To make gcc happy */
 
diff --git a/fs/isofs/util.c b/fs/isofs/util.c
index e88dba721661..348af786a8a4 100644
--- a/fs/isofs/util.c
+++ b/fs/isofs/util.c
@@ -16,10 +16,10 @@ 
  * to GMT.  Thus  we should always be correct.
  */
 
-int iso_date(u8 *p, int flag)
+time64_t iso_date(u8 *p, int flag)
 {
 	int year, month, day, hour, minute, second, tz;
-	int crtime;
+	time64_t crtime;
 
 	year = p[0];
 	month = p[1];