svn commit: r199418 - head/sys/dev/syscons

Kostik Belousov kostikbel at gmail.com
Tue Nov 17 19:50:13 UTC 2009


On Tue, Nov 17, 2009 at 02:34:54PM -0500, Jung-uk Kim wrote:
> On Tuesday 17 November 2009 02:24 pm, Konstantin Belousov wrote:
> > Author: kib
> > Date: Tue Nov 17 19:24:26 2009
> > New Revision: 199418
> > URL: http://svn.freebsd.org/changeset/base/199418
> >
> > Log:
> >   Fix pgsignal() call after signature change in r199355.
> >
> >   Reported and tested by:	bf1783 googlemail com
> >   MFC after:	1 month
> >
> > Modified:
> >   head/sys/dev/syscons/scvidctl.c
> >
> > Modified: head/sys/dev/syscons/scvidctl.c
> > ===================================================================
> >=========== --- head/sys/dev/syscons/scvidctl.c	Tue Nov 17 18:57:44
> > 2009	(r199417) +++ head/sys/dev/syscons/scvidctl.c	Tue Nov 17
> > 19:24:26 2009	(r199418) @@ -321,6 +321,7 @@
> > sc_set_pixel_mode(scr_stat *scp, struct return ENODEV;
> >  #else
> >      video_info_t info;
> > +    ksiginfo_t ksi;
> >      u_char *font;
> >      int prev_ysize;
> >      int error;
> > @@ -458,8 +459,11 @@ sc_set_pixel_mode(scr_stat *scp, struct
> >  	tp->t_winsize.ws_col = scp->xsize;
> >  	tp->t_winsize.ws_row = scp->ysize;
> >  	if (tp->t_pgrp != NULL) {
> > +	    ksiginfo_init(&ksi);
> > +	    ksi.ksi_signo = SIGWINCH;
> > +	    ksi.ksi_code = SI_KERNEL;
> >  	    PGRP_LOCK(tp->t_pgrp);
> > -	    pgsignal(tp->t_pgrp, SIGWINCH, 1);
> > +	    pgsignal(tp->t_pgrp, SIGWINCH, 1, &ksi);
> >  	    PGRP_UNLOCK(tp->t_pgrp);
> >  	}
> >      }
> 
> Probably you wanted this:
> 
> --- sys/dev/syscons/scvidctl.c
> +++ sys/dev/syscons/scvidctl.c
> @@ -321,7 +321,6 @@ sc_set_pixel_mode(scr_stat *scp, struct tty *tp, i
>      return ENODEV;
>  #else
>      video_info_t info;
> -    ksiginfo_t ksi;
>      u_char *font;
>      int prev_ysize;
>      int error;
> @@ -458,14 +457,8 @@ sc_set_pixel_mode(scr_stat *scp, struct tty *tp, i
>         || tp->t_winsize.ws_row != scp->ysize) {
>         tp->t_winsize.ws_col = scp->xsize;
>         tp->t_winsize.ws_row = scp->ysize;
> -       if (tp->t_pgrp != NULL) {
> -           ksiginfo_init(&ksi);
> -           ksi.ksi_signo = SIGWINCH;
> -           ksi.ksi_code = SI_KERNEL;
> -           PGRP_LOCK(tp->t_pgrp);
> -           pgsignal(tp->t_pgrp, SIGWINCH, 1, &ksi);
> -           PGRP_UNLOCK(tp->t_pgrp);
> -       }
> +
> +       tty_signal_pgrp(tp, SIGWINCH);
>      }
>  
>      return 0;
> ------------------------------------------------------------------
> 
> In fact, it seems it was missed in r181905.
> 
> Jung-uk Kim

I do not think so, at least it needs further considerations.
First, call to tty_signal_pgrp() requires locked tty.
Second, tty_signal_pgrp() restores i/o processing on the terminal,
	tp->t_flags &= ~TF_STOPPED;
that is not quite obviously right thing to do on SIGWINCH.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20091117/ed0a57b6/attachment-0001.pgp


More information about the svn-src-all mailing list