svn commit: r196513 - head/usr.sbin/ppp
Brian Somers
brian at FreeBSD.org
Mon Aug 24 17:18:18 UTC 2009
Author: brian
Date: Mon Aug 24 17:18:17 2009
New Revision: 196513
URL: http://svn.freebsd.org/changeset/base/196513
Log:
When realloc()ing device memory for transfer to another ppp process,
don't continue to use the realloc()d pointer - it might have changed!
Remove some stray diagnostics while I'm here.
MFC after: 3 days
Modified:
head/usr.sbin/ppp/ether.c
head/usr.sbin/ppp/netgraph.c
head/usr.sbin/ppp/tty.c
Modified: head/usr.sbin/ppp/ether.c
==============================================================================
--- head/usr.sbin/ppp/ether.c Mon Aug 24 16:19:47 2009 (r196512)
+++ head/usr.sbin/ppp/ether.c Mon Aug 24 17:18:17 2009 (r196513)
@@ -193,17 +193,18 @@ static void
ether_device2iov(struct device *d, struct iovec *iov, int *niov,
int maxiov __unused, int *auxfd, int *nauxfd)
{
- struct etherdevice *dev = device2ether(d);
+ struct etherdevice *dev;
int sz = physical_MaxDeviceSize();
- iov[*niov].iov_base = realloc(d, sz);
- if (iov[*niov].iov_base == NULL) {
+ iov[*niov].iov_base = d = realloc(d, sz);
+ if (d == NULL) {
log_Printf(LogALERT, "Failed to allocate memory: %d\n", sz);
AbortProgram(EX_OSERR);
}
iov[*niov].iov_len = sz;
(*niov)++;
+ dev = device2ether(d);
if (dev->cs >= 0) {
*auxfd = dev->cs;
(*nauxfd)++;
Modified: head/usr.sbin/ppp/netgraph.c
==============================================================================
--- head/usr.sbin/ppp/netgraph.c Mon Aug 24 16:19:47 2009 (r196512)
+++ head/usr.sbin/ppp/netgraph.c Mon Aug 24 17:18:17 2009 (r196513)
@@ -235,7 +235,6 @@ ng_Read(struct physical *p, void *v, siz
{
char hook[NG_HOOKSIZ];
-log_Printf(LogDEBUG, "ng_Read\n");
switch (p->dl->state) {
case DATALINK_DIAL:
case DATALINK_LOGIN:
@@ -282,17 +281,18 @@ static void
ng_device2iov(struct device *d, struct iovec *iov, int *niov,
int maxiov __unused, int *auxfd, int *nauxfd)
{
- struct ngdevice *dev = device2ng(d);
+ struct ngdevice *dev;
int sz = physical_MaxDeviceSize();
- iov[*niov].iov_base = realloc(d, sz);
- if (iov[*niov].iov_base == NULL) {
+ iov[*niov].iov_base = d = realloc(d, sz);
+ if (d == NULL) {
log_Printf(LogALERT, "Failed to allocate memory: %d\n", sz);
AbortProgram(EX_OSERR);
}
iov[*niov].iov_len = sz;
(*niov)++;
+ dev = device2ng(d);
*auxfd = dev->cs;
(*nauxfd)++;
}
Modified: head/usr.sbin/ppp/tty.c
==============================================================================
--- head/usr.sbin/ppp/tty.c Mon Aug 24 16:19:47 2009 (r196512)
+++ head/usr.sbin/ppp/tty.c Mon Aug 24 17:18:17 2009 (r196513)
@@ -384,7 +384,6 @@ UnloadLineDiscipline(struct physical *p)
struct ttydevice *dev = device2tty(p->handler);
if (isngtty(dev)) {
-log_Printf(LogPHASE, "back to speed %d\n", dev->real.speed);
if (!physical_SetSpeed(p, dev->real.speed))
log_Printf(LogWARN, "Couldn't reset tty speed to %d\n", dev->real.speed);
dev->real.speed = 0;
@@ -582,17 +581,19 @@ tty_device2iov(struct device *d, struct
#endif
)
{
- struct ttydevice *dev = device2tty(d);
+ struct ttydevice *dev;
int sz = physical_MaxDeviceSize();
- iov[*niov].iov_base = realloc(d, sz);
- if (iov[*niov].iov_base == NULL) {
+ iov[*niov].iov_base = d = realloc(d, sz);
+ if (d == NULL) {
log_Printf(LogALERT, "Failed to allocate memory: %d\n", sz);
AbortProgram(EX_OSERR);
}
iov[*niov].iov_len = sz;
(*niov)++;
+ dev = device2tty(d);
+
#ifndef NONETGRAPH
if (dev->cs >= 0) {
*auxfd = dev->cs;
More information about the svn-src-head
mailing list