From: Arnd Bergmann <arnd@arndb.de> To: Jaroslav Kysela <perex@perex.cz> Cc: Baolin Wang <baolin.wang@linaro.org>, Takashi Iwai <tiwai@suse.com>, Liam Girdwood <lgirdwood@gmail.com>, Mark Brown <broonie@kernel.org>, Takashi Sakamoto <o-takashi@sakamocchi.jp>, Ingo Molnar <mingo@kernel.org>, SF Markus Elfring <elfring@users.sourceforge.net>, Dan Carpenter <dan.carpenter@oracle.com>, jeeja.kp@intel.com, Vinod Koul <vinod.koul@intel.com>, Guneshwor Singh <guneshwor.o.singh@intel.com>, subhransu.s.prusty@intel.com, Bhumika Goyal <bhumirks@gmail.com>, gudishax.kranthikumar@intel.com, Naveen M <naveen.m@intel.com>, hardik.t.shah@intel.com, Arvind Yadav <arvind.yadav.cs@gmail.com>, Fabian Frederick <fabf@skynet.be>, alsa-devel@alsa-project.org, Linux Kernel Mailing List <linux-kernel@vger.kernel.org> Subject: Re: [PATCH 0/8] Fix year 2038 issue for sound subsystem Date: Tue, 24 Apr 2018 15:37:28 +0200 [thread overview] Message-ID: <CAK8P3a0SKAAJMUDOJBjHKCnvprqOTjTnX9Ju3W_q1avzdU7EnA@mail.gmail.com> (raw) In-Reply-To: <66b26dc6-9139-80cc-0b49-28ff68169b5c@perex.cz> On Tue, Apr 24, 2018 at 3:29 PM, Jaroslav Kysela <perex@perex.cz> wrote: > Dne 24.4.2018 v 14:06 Baolin Wang napsal(a): >> Since many structures will use timespec type variables to record time stamp >> in uapi/asound.h, which are not year 2038 safe on 32bit system. This patchset >> tries to introduce new structures removing timespec type to compatible native >> mode and compat mode. >> >> Moreover this patchset also converts the internal structrures to use timespec64 >> type and related APIs. > > Thanks for your patchset. A few comments: > > It might be more nice to reuse the existing structures and put > timespec64 to the reserved field and duplicate information (with the > 32-bit wrapping for the old fields). It means that we do not need new > ioctls and old libraries will be fine. The current approach is intended to make any user space work without source-level changes, i.e. you can still build an old alsa-lib package against a new glibc as long as you have the latest kernel headers (which the glibc requires for using 64-bit time_t). If we try to extend the structures in a different way, that requires user space changes, and existing source code would silently break on a future glibc. IMHO changing the source-level interface should only be done as a last resort for y2038. Note that most of the work is not required to keep working beyond 2038, but actually is required just to keep working with an updated glibc that redefines time_t to 64 bit. The audio timestamps should be in CLOCK_MONOTONIC for new user space anyway, and that doesn't overflow a 32-bit type. > It may make sense to define private snd_timespec32 and snd_timespec64 > with s32/s64 types instead separate sec/usec fields. Right, I have some ideas there as well as I saw one remaining issue in my patch for the status mmap: when building a program with 64-bit time_t, we still see a copy of the old structure but with an\ impossible layout. ARnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de> To: Jaroslav Kysela <perex@perex.cz> Cc: Fabian Frederick <fabf@skynet.be>, Arvind Yadav <arvind.yadav.cs@gmail.com>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, alsa-devel@alsa-project.org, Baolin Wang <baolin.wang@linaro.org>, Vinod Koul <vinod.koul@intel.com>, hardik.t.shah@intel.com, Takashi Iwai <tiwai@suse.com>, Guneshwor Singh <guneshwor.o.singh@intel.com>, Liam Girdwood <lgirdwood@gmail.com>, Takashi Sakamoto <o-takashi@sakamocchi.jp>, gudishax.kranthikumar@intel.com, Mark Brown <broonie@kernel.org>, Bhumika Goyal <bhumirks@gmail.com>, Naveen M <naveen.m@intel.com>, SF Markus Elfring <elfring@users.sourceforge.net>, jeeja.kp@intel.com, subhransu.s.prusty@intel.com, Ingo Molnar <mingo@kernel.org>, Dan Carpenter <dan.carpenter@oracle.com> Subject: Re: [PATCH 0/8] Fix year 2038 issue for sound subsystem Date: Tue, 24 Apr 2018 15:37:28 +0200 [thread overview] Message-ID: <CAK8P3a0SKAAJMUDOJBjHKCnvprqOTjTnX9Ju3W_q1avzdU7EnA@mail.gmail.com> (raw) In-Reply-To: <66b26dc6-9139-80cc-0b49-28ff68169b5c@perex.cz> On Tue, Apr 24, 2018 at 3:29 PM, Jaroslav Kysela <perex@perex.cz> wrote: > Dne 24.4.2018 v 14:06 Baolin Wang napsal(a): >> Since many structures will use timespec type variables to record time stamp >> in uapi/asound.h, which are not year 2038 safe on 32bit system. This patchset >> tries to introduce new structures removing timespec type to compatible native >> mode and compat mode. >> >> Moreover this patchset also converts the internal structrures to use timespec64 >> type and related APIs. > > Thanks for your patchset. A few comments: > > It might be more nice to reuse the existing structures and put > timespec64 to the reserved field and duplicate information (with the > 32-bit wrapping for the old fields). It means that we do not need new > ioctls and old libraries will be fine. The current approach is intended to make any user space work without source-level changes, i.e. you can still build an old alsa-lib package against a new glibc as long as you have the latest kernel headers (which the glibc requires for using 64-bit time_t). If we try to extend the structures in a different way, that requires user space changes, and existing source code would silently break on a future glibc. IMHO changing the source-level interface should only be done as a last resort for y2038. Note that most of the work is not required to keep working beyond 2038, but actually is required just to keep working with an updated glibc that redefines time_t to 64 bit. The audio timestamps should be in CLOCK_MONOTONIC for new user space anyway, and that doesn't overflow a 32-bit type. > It may make sense to define private snd_timespec32 and snd_timespec64 > with s32/s64 types instead separate sec/usec fields. Right, I have some ideas there as well as I saw one remaining issue in my patch for the status mmap: when building a program with 64-bit time_t, we still see a copy of the old structure but with an\ impossible layout. ARnd
next prev parent reply other threads:[~2018-04-24 13:37 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-24 12:06 [PATCH 0/8] Fix year 2038 issue for sound subsystem Baolin Wang 2018-04-24 12:06 ` [PATCH 1/8] ALSA: Replace timespec with timespec64 Baolin Wang 2018-04-24 12:06 ` Baolin Wang 2018-04-26 8:15 ` kbuild test robot 2018-04-26 8:15 ` kbuild test robot 2018-04-26 8:30 ` Arnd Bergmann 2018-04-26 8:30 ` Arnd Bergmann 2018-04-26 8:41 ` Baolin Wang 2018-04-26 8:41 ` Baolin Wang 2018-04-24 12:06 ` [PATCH 2/8] ALSA: Avoid using timespec for struct snd_timer_status Baolin Wang 2018-04-24 12:06 ` Baolin Wang 2018-04-24 12:06 ` [PATCH 3/8] ALSA: Avoid using timespec for struct snd_ctl_elem_value Baolin Wang 2018-04-24 12:06 ` [PATCH 4/8] ALSA: Avoid using timespec for struct snd_pcm_status Baolin Wang 2018-04-26 9:20 ` kbuild test robot 2018-04-26 9:20 ` kbuild test robot 2018-04-26 10:53 ` Baolin Wang 2018-04-26 12:50 ` Arnd Bergmann 2018-04-26 12:50 ` Arnd Bergmann 2018-04-24 12:06 ` [PATCH 5/8] ALSA: Avoid using timespec for struct snd_rawmidi_status Baolin Wang 2018-04-24 12:06 ` Baolin Wang 2018-04-24 12:06 ` [PATCH 6/8] ALSA: Avoid using timespec for struct snd_timer_tread Baolin Wang 2018-04-24 12:06 ` [PATCH 7/8] ALSA: move snd_pcm_ioctl_sync_ptr_compat into pcm_native.c Baolin Wang 2018-04-24 12:06 ` [PATCH 8/8] ALSA: add new 32-bit layout for snd_pcm_mmap_status/control Baolin Wang 2018-04-24 13:27 ` Arnd Bergmann 2018-04-26 3:07 ` kbuild test robot 2018-04-26 3:07 ` kbuild test robot 2018-04-26 11:34 ` Arnd Bergmann 2018-04-26 11:34 ` Arnd Bergmann 2018-04-26 6:20 ` kbuild test robot 2018-04-26 6:20 ` kbuild test robot 2018-04-26 6:23 ` kbuild test robot 2018-04-26 6:23 ` kbuild test robot 2018-04-26 11:25 ` kbuild test robot 2018-04-26 11:25 ` kbuild test robot 2018-04-26 11:31 ` Arnd Bergmann 2018-04-26 11:31 ` Arnd Bergmann 2018-04-26 12:11 ` Takashi Iwai 2018-04-26 12:11 ` Takashi Iwai 2018-04-26 15:14 ` Arnd Bergmann 2018-04-24 13:29 ` [PATCH 0/8] Fix year 2038 issue for sound subsystem Jaroslav Kysela 2018-04-24 13:29 ` Jaroslav Kysela 2018-04-24 13:37 ` Arnd Bergmann [this message] 2018-04-24 13:37 ` Arnd Bergmann 2018-04-25 7:23 ` Jaroslav Kysela 2018-04-25 11:26 ` Arnd Bergmann 2018-04-25 11:56 ` Mark Brown 2018-04-24 13:29 ` Arnd Bergmann 2018-04-24 13:29 ` Arnd Bergmann
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAK8P3a0SKAAJMUDOJBjHKCnvprqOTjTnX9Ju3W_q1avzdU7EnA@mail.gmail.com \ --to=arnd@arndb.de \ --cc=alsa-devel@alsa-project.org \ --cc=arvind.yadav.cs@gmail.com \ --cc=baolin.wang@linaro.org \ --cc=bhumirks@gmail.com \ --cc=broonie@kernel.org \ --cc=dan.carpenter@oracle.com \ --cc=elfring@users.sourceforge.net \ --cc=fabf@skynet.be \ --cc=gudishax.kranthikumar@intel.com \ --cc=guneshwor.o.singh@intel.com \ --cc=hardik.t.shah@intel.com \ --cc=jeeja.kp@intel.com \ --cc=lgirdwood@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@kernel.org \ --cc=naveen.m@intel.com \ --cc=o-takashi@sakamocchi.jp \ --cc=perex@perex.cz \ --cc=subhransu.s.prusty@intel.com \ --cc=tiwai@suse.com \ --cc=vinod.koul@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.