[PATCH] i2Output always takes kernel data now

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Al Viro and committed by Linus Torvalds f061c584 cff52daf

+6 -11
+3 -8
drivers/char/ip2/i2lib.c
··· 1007 1007 // applications that one cannot break out of. 1008 1008 //****************************************************************************** 1009 1009 static int 1010 - i2Output(i2ChanStrPtr pCh, const char *pSource, int count, int user ) 1010 + i2Output(i2ChanStrPtr pCh, const char *pSource, int count) 1011 1011 { 1012 1012 i2eBordStrPtr pB; 1013 1013 unsigned char *pInsert; ··· 1020 1020 1021 1021 int bailout = 10; 1022 1022 1023 - ip2trace (CHANN, ITRC_OUTPUT, ITRC_ENTER, 2, count, user ); 1023 + ip2trace (CHANN, ITRC_OUTPUT, ITRC_ENTER, 2, count, 0 ); 1024 1024 1025 1025 // Ensure channel structure seems real 1026 1026 if ( !i2Validate ( pCh ) ) ··· 1087 1087 DATA_COUNT_OF(pInsert) = amountToMove; 1088 1088 1089 1089 // Move the data 1090 - if ( user ) { 1091 - rc = copy_from_user((char*)(DATA_OF(pInsert)), pSource, 1092 - amountToMove ); 1093 - } else { 1094 - memcpy( (char*)(DATA_OF(pInsert)), pSource, amountToMove ); 1095 - } 1090 + memcpy( (char*)(DATA_OF(pInsert)), pSource, amountToMove ); 1096 1091 // Adjust pointers and indices 1097 1092 pSource += amountToMove; 1098 1093 pCh->Obuf_char_count += amountToMove;
+1 -1
drivers/char/ip2/i2lib.h
··· 332 332 static int i2GetStatus(i2ChanStrPtr, int); 333 333 static int i2Input(i2ChanStrPtr); 334 334 static int i2InputFlush(i2ChanStrPtr); 335 - static int i2Output(i2ChanStrPtr, const char *, int, int); 335 + static int i2Output(i2ChanStrPtr, const char *, int); 336 336 static int i2OutputFree(i2ChanStrPtr); 337 337 static int i2ServiceBoard(i2eBordStrPtr); 338 338 static void i2DrainOutput(i2ChanStrPtr, int);
+2 -2
drivers/char/ip2/ip2main.c
··· 1704 1704 1705 1705 /* This is the actual move bit. Make sure it does what we need!!!!! */ 1706 1706 WRITE_LOCK_IRQSAVE(&pCh->Pbuf_spinlock,flags); 1707 - bytesSent = i2Output( pCh, pData, count, 0 ); 1707 + bytesSent = i2Output( pCh, pData, count); 1708 1708 WRITE_UNLOCK_IRQRESTORE(&pCh->Pbuf_spinlock,flags); 1709 1709 1710 1710 ip2trace (CHANN, ITRC_WRITE, ITRC_RETURN, 1, bytesSent ); ··· 1764 1764 // 1765 1765 // We may need to restart i2Output if it does not fullfill this request 1766 1766 // 1767 - strip = i2Output( pCh, pCh->Pbuf, pCh->Pbuf_stuff, 0 ); 1767 + strip = i2Output( pCh, pCh->Pbuf, pCh->Pbuf_stuff); 1768 1768 if ( strip != pCh->Pbuf_stuff ) { 1769 1769 memmove( pCh->Pbuf, &pCh->Pbuf[strip], pCh->Pbuf_stuff - strip ); 1770 1770 }