[OE-core] [PATCH] glibc_2.21.bb: Fix LSB bugs #3033

Khem Raj raj.khem at gmail.com
Fri May 8 16:21:11 UTC 2015


> On May 8, 2015, at 2:01 AM, Li xin <lixin.fnst at cn.fujitsu.com> wrote:
> 
> Bug 3033 - T.c_iflag and T.tcgetattr fail when using pseudo ttys (on some systems).
> https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3033
> 

This patch is ok. However two questions
1. what kernel version do you see it on and is kernel piece fixed too or is not required
2. Has this been submitted to glibc ?

> Signed-off-by: Li Xin <lixin.fnst at cn.fujitsu.com>
> ---
> .../glibc/glibc/tcsetattr.c-Fix-LSB-NG-Cases.patch | 69 ++++++++++++++++++++++
> meta/recipes-core/glibc/glibc_2.21.bb              |  1 +
> 2 files changed, 70 insertions(+)
> create mode 100644 meta/recipes-core/glibc/glibc/tcsetattr.c-Fix-LSB-NG-Cases.patch
> 
> diff --git a/meta/recipes-core/glibc/glibc/tcsetattr.c-Fix-LSB-NG-Cases.patch b/meta/recipes-core/glibc/glibc/tcsetattr.c-Fix-LSB-NG-Cases.patch
> new file mode 100644
> index 0000000..df0e61d
> --- /dev/null
> +++ b/meta/recipes-core/glibc/glibc/tcsetattr.c-Fix-LSB-NG-Cases.patch
> @@ -0,0 +1,69 @@
> +From 9022ee975265b65f59782ea92b59eccc95774a88 Mon Sep 17 00:00:00 2001
> +From: Li xin <lixin.fnst at cn.fujitsu.com>
> +Date: Fri, 8 May 2015 13:51:30 +0900
> +Subject: [PATCH] tcsetattr.c: Fix LSB NG Cases
> +
> +/tset/POSIX.os/devclass/tcgetattr/T.tcgetattr 1 2
> +/tset/POSIX.os/devclass/c_iflag/T.c_iflag 6 7 8 9
> +
> +This patch is from Fedora.
> +
> +Upstream-Status: pending.
> +
> +Signed-off-by: Li Xin <lixin.fnst at cn.fujitsu.com>
> +---
> + sysdeps/unix/sysv/linux/tcsetattr.c | 32 +++++++++++++++++++++++++++++++-
> + 1 file changed, 31 insertions(+), 1 deletion(-)
> +
> +diff --git a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c
> +index d7afc63..7cb2c61 100644
> +--- a/sysdeps/unix/sysv/linux/tcsetattr.c
> ++++ b/sysdeps/unix/sysv/linux/tcsetattr.c
> +@@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios_p)
> + {
> +   struct __kernel_termios k_termios;
> +   unsigned long int cmd;
> ++  int retval;
> +
> +   switch (optional_actions)
> +     {
> +@@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios_p)
> +   memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0],
> + 	  __KERNEL_NCCS * sizeof (cc_t));
> +
> +-  return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
> ++  retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
> ++
> ++  if (retval == 0 && cmd == TCSETS)
> ++    {
> ++      /* The Linux kernel has a bug which silently ignore the invalid
> ++        c_cflag on pty. We have to check it here. */
> ++      int save = errno;
> ++      retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios);
> ++      if (retval)
> ++       {
> ++         /* We cannot verify if the setting is ok. We don't return
> ++            an error (?). */
> ++         __set_errno (save);
> ++         retval = 0;
> ++       }
> ++      else if ((termios_p->c_cflag & (PARENB | CREAD))
> ++              != (k_termios.c_cflag & (PARENB | CREAD))
> ++              || ((termios_p->c_cflag & CSIZE)
> ++                  && ((termios_p->c_cflag & CSIZE)
> ++                      != (k_termios.c_cflag & CSIZE))))
> ++       {
> ++         /* It looks like the Linux kernel silently changed the
> ++            PARENB/CREAD/CSIZE bits in c_cflag. Report it as an
> ++            error. */
> ++         __set_errno (EINVAL);
> ++         retval = -1;
> ++       }
> ++    }
> ++
> ++  return retval;
> + }
> + libc_hidden_def (tcsetattr)
> +--
> +1.8.4.2
> +
> diff --git a/meta/recipes-core/glibc/glibc_2.21.bb b/meta/recipes-core/glibc/glibc_2.21.bb
> index 58a9601..a061b08 100644
> --- a/meta/recipes-core/glibc/glibc_2.21.bb
> +++ b/meta/recipes-core/glibc/glibc_2.21.bb
> @@ -27,6 +27,7 @@ SRC_URI = "git://sourceware.org/git/glibc.git;branch=${BRANCH} \
>            file://0001-yes-within-the-path-sets-wrong-config-variables.patch \
>            file://elf-Makefile-fix-a-typo.patch \
>            ${EGLIBCPATCHES} \
> +           file://tcsetattr.c-Fix-LSB-NG-Cases.patch \
>           "
> EGLIBCPATCHES = "\
>            file://timezone-re-written-tzselect-as-posix-sh.patch \
> --
> 1.8.4.2
> 
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 204 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20150508/34d424de/attachment-0002.sig>


More information about the Openembedded-core mailing list