rem: if (off < m->m_len)
add: if (off < (int) m->m_len)
context: struct mbuf *m_copym(struct mbuf *m, int off0, int len){	struct mbuf *n, **np;	int off = off0;	struct mbuf *top;	int copyhdr = 0;	if (off < 0 || len < 0) {		printf("PANIC: m_copym: m: off %d, len %d\n", off, len);		return NULL;	}	if (off == 0 && m->m_flags & M_PKTHDR)		copyhdr = 1;	while (off > 0) {		if (!m) {			printf("PANIC: m_copym: null mbuf\n");			return NULL;		}		if (off < m->m_len)			break;		off -= m->m_len;		m = m->m_next;	}	np = &top;	top = NULL;	while (len > 0) {		if (!m) {			if (len != M_COPYALL) {				printf("PANIC: m_copym: m == NULL and not COPYALL\n");				return NULL;			}			break;		}		MGET(n, m->m_type);		*np = n;		if (!n)			goto nospace;		if (copyhdr) {			M_DUP_PKTHDR(n, m);			if (len == M_COPYALL)				n->m_pkthdr.len -= off0;			else				n->m_pkthdr.len = len;			copyhdr = 0;		}		n->m_len = min(len, m->m_len - off);		if (m->m_flags & M_EXT) {			/*			 * we are unsure about the way m was allocated.			 * copy into multiple MCLBYTES cluster mbufs.			 */			MCLGET(n);			n->m_len = 0;			n->m_len = M_TRAILINGSPACE(n);			n->m_len = min(n->m_len, len);			n->m_len = min(n->m_len, m->m_len - off);			memcpy(mtod(n, caddr_t), (void *)(mtod(m, char *) + off),                              (unsigned)n->m_len);		} else			memcpy(mtod(n, caddr_t), (void*)(mtod(m, char *)+off),                           (unsigned)n->m_len);		if (len != M_COPYALL)			len -= n->m_len;		off += n->m_len;		if (off == m->m_len) {			m = m->m_next;			off = 0;		}		np = &n->m_next;	}	return (top);nospace:	m_freem(top);	return (NULL);}