git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ahci: Add PCI-id for the Highpoint Rocketraid 644L card
[pandora-kernel.git]
/
net
/
core
/
iovec.c
diff --git
a/net/core/iovec.c
b/net/core/iovec.c
index
c40f27e
..
66e3f1f
100644
(file)
--- a/
net/core/iovec.c
+++ b/
net/core/iovec.c
@@
-39,7
+39,7
@@
int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address,
{
int size, ct, err;
{
int size, ct, err;
- if (m->msg_namelen) {
+ if (m->msg_name
&& m->msg_name
len) {
if (mode == VERIFY_READ) {
void __user *namep;
namep = (void __user __force *) m->msg_name;
if (mode == VERIFY_READ) {
void __user *namep;
namep = (void __user __force *) m->msg_name;
@@
-51,6
+51,7
@@
int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address,
m->msg_name = address;
} else {
m->msg_name = NULL;
m->msg_name = address;
} else {
m->msg_name = NULL;
+ m->msg_namelen = 0;
}
size = m->msg_iovlen * sizeof(struct iovec);
}
size = m->msg_iovlen * sizeof(struct iovec);
@@
-156,6
+157,10
@@
EXPORT_SYMBOL(memcpy_fromiovec);
int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov,
int offset, int len)
{
int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov,
int offset, int len)
{
+ /* No data? Done! */
+ if (len == 0)
+ return 0;
+
/* Skip over the finished iovecs */
while (offset >= iov->iov_len) {
offset -= iov->iov_len;
/* Skip over the finished iovecs */
while (offset >= iov->iov_len) {
offset -= iov->iov_len;