]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/crypto/talitos.c
crypto: talitos - fix bug in sg_copy_end_to_buffer
[net-next-2.6.git] / drivers / crypto / talitos.c
index 6a0f59d1fc5c4e834aaf90006ca30c7e35f8cdd9..bd78acf3c365aa1910a467f3fce882fa26c84841 100644 (file)
@@ -1183,10 +1183,14 @@ static size_t sg_copy_end_to_buffer(struct scatterlist *sgl, unsigned int nents,
                                /* Copy part of this segment */
                                ignore = skip - offset;
                                len = miter.length - ignore;
+                               if (boffset + len > buflen)
+                                       len = buflen - boffset;
                                memcpy(buf + boffset, miter.addr + ignore, len);
                        } else {
-                               /* Copy all of this segment */
+                               /* Copy all of this segment (up to buflen) */
                                len = miter.length;
+                               if (boffset + len > buflen)
+                                       len = buflen - boffset;
                                memcpy(buf + boffset, miter.addr, len);
                        }
                        boffset += len;
@@ -2398,7 +2402,7 @@ static int talitos_probe(struct of_device *ofdev,
                         const struct of_device_id *match)
 {
        struct device *dev = &ofdev->dev;
-       struct device_node *np = ofdev->node;
+       struct device_node *np = ofdev->dev.of_node;
        struct talitos_private *priv;
        const unsigned int *prop;
        int i, err;
@@ -2573,8 +2577,11 @@ static const struct of_device_id talitos_match[] = {
 MODULE_DEVICE_TABLE(of, talitos_match);
 
 static struct of_platform_driver talitos_driver = {
-       .name = "talitos",
-       .match_table = talitos_match,
+       .driver = {
+               .name = "talitos",
+               .owner = THIS_MODULE,
+               .of_match_table = talitos_match,
+       },
        .probe = talitos_probe,
        .remove = talitos_remove,
 };