Bug #789
closed(part 2) pppX fix for altq/pf
0%
Description
Oops, this is also needed!
Index: ppp_tty.c
===================================================================
RCS file: /usr/dfly/repo/src/sys/net/ppp_layer/ppp_tty.c,v
retrieving revision 1.23
diff u -r1.23 ppp_tty.c ppp_tty.c 22 Dec 2006 23:44:57
--0000 1.23>uio_resid < PPP_HDRLEN)
+++ ppp_tty.c 11 Apr 2007 03:41:54 -0000@ -378,12 +368,16
@
uio
return (EMSGSIZE);
crit_enter();
for (mp = &m0; uio->uio_resid; mp = &m->m_next) {
- MGET(m, MB_WAIT, MT_DATA);
+ if ( mp == &m0 ) {
+ MGETHDR(m, MB_WAIT, MT_DATA);
+ m->m_pkthdr.len = uio->uio_resid - PPP_HDRLEN;
+ m->m_pkthdr.rcvif = NULL;
+ }
+ else
+ MGET(m, MB_WAIT, MT_DATA);
if ((*mp = m) == NULL) {
m_freem(m0);
- crit_exit();
return (ENOBUFS);
}
m->m_len = 0;
Updated by dillon over 17 years ago
:Oops, this is also needed!
p.s. all these patches are malformed. Your mailer is doing something
bad to them. Don't repost, I'm patching it manually. But just to let
you know.
-Matt
:
:Index: ppp_tty.c
:===================================================================
:RCS file: /usr/dfly/repo/src/sys/net/ppp_layer/ppp_tty.c,v
:retrieving revision 1.23
:diff u -r1.23 ppp_tty.c ppp_tty.c 22 Dec 2006 23:44:57
:--0000 1.23>uio_resid < PPP_HDRLEN)
:+++ ppp_tty.c 11 Apr 2007 03:41:54 -0000
:@ -378,12 +368,16
@
: uio
: return (EMSGSIZE);
:
: crit_enter();
: for (mp = &m0; uio->uio_resid; mp = &m->m_next) {
:- MGET;
:+ if ( mp == &m0 ) {
:+ MGETHDR;
:+ m->m_pkthdr.len = uio->uio_resid - PPP_HDRLEN;
:+ m->m_pkthdr.rcvif = NULL;
:+ }
:+ else
:+ MGET;
: if ((*mp = m) == NULL) {
: m_freem(m0);
:- crit_exit();
: return (ENOBUFS);
: }
: m->m_len = 0;
:
Matthew Dillon
<dillon@backplane.com>
Updated by dillon over 17 years ago
:Oops, this is also needed!
:
: crit_enter();
: for (mp = &m0; uio->uio_resid; mp = &m->m_next) {
:- MGET;
:+ if ( mp == &m0 ) {
:+ MGETHDR;
:+ m->m_pkthdr.len = uio->uio_resid - PPP_HDRLEN;
:+ m->m_pkthdr.rcvif = NULL;
:+ }
:+ else
:+ MGET;
: if ((*mp = m) == NULL) {
: m_freem(m0);
:- crit_exit();
I think that crit_exit() has to stay.
-Matt