mirror of https://gitee.com/openkylin/linux.git
Minor bug fix for linux-3.14
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAABAgAGBQJS67pQAAoJEDaohF61QIxkfkcQAKAuNhBtaGkx8Dd9gPM98DrW F4NnitUNzcjHTSq23oRIe7rLanXTMHKMhq4S83YWISLTWCAmekOVF4xs8WTEm1Px 5/X3an65m3mvW/1V7oxixA+GLUk2LwPqPt7N+jWApkR9KB5LydQCucdbq4Vza9gd SkoK5RJe8bTE+43k962vsDJM7XCVeUOGOSXO7MyTaipRZ+fyuEPwwbQ0u7Bxl9JG HkfhCJUu3V79nruIgmP1Z2llN2XIv/fsCo3F42yBspSBUxYqnpnAdo6Zr5srnEQC kHm67VFk5sPnLPnm6AxaoonE9GX+TMzy5eUk6Lb5x5EwRlH694FFovlquFyr3RjN cmh6VWGv1jcYnEmRhKjT8Vs0GQ+Q5L2L6dEdDbck2WkVWPDdLb83wbPJRZ/g5kcF GAUI8EjjSR4ezuZqmv6tbWHpn/q7p6NekC8DVMmwtoBZgIuFmITyrqpFJUG4acnO yuGdZtYePnMHZlQMNTdzUjuOu/Wyqit5OrM/ztmrGlYCI8eiE17OInWikZzSFFcf +uDodCg5tokG8AlNgNZ+thcpjO7aAR9GCOD2INZYKlFRkJANpQ+OOK+AOafmWoqO UjmL0rH3FXRu0uhD8VLKRaUfuyMaBHJ/9+ndwmyOa+7x0BPv03hw3bGGhy6tsTHg XbxlExsTrtpKEXwznWqG =F/GX -----END PGP SIGNATURE----- Merge tag 'jfs-3.14' of git://github.com/kleikamp/linux-shaggy Pull jfs fix from David Kleikamp: "Minor bug fix for linux-3.14" * tag 'jfs-3.14' of git://github.com/kleikamp/linux-shaggy: jfs: fix xattr value size overflow in __jfs_setxattr
This commit is contained in:
commit
e30b82bbe0
|
@ -791,6 +791,19 @@ int __jfs_setxattr(tid_t tid, struct inode *inode, const char *name,
|
|||
/* Completely new ea list */
|
||||
xattr_size = sizeof (struct jfs_ea_list);
|
||||
|
||||
/*
|
||||
* The size of EA value is limitted by on-disk format up to
|
||||
* __le16, there would be an overflow if the size is equal
|
||||
* to XATTR_SIZE_MAX (65536). In order to avoid this issue,
|
||||
* we can pre-checkup the value size against USHRT_MAX, and
|
||||
* return -E2BIG in this case, which is consistent with the
|
||||
* VFS setxattr interface.
|
||||
*/
|
||||
if (value_len >= USHRT_MAX) {
|
||||
rc = -E2BIG;
|
||||
goto release;
|
||||
}
|
||||
|
||||
ea = (struct jfs_ea *) ((char *) ealist + xattr_size);
|
||||
ea->flag = 0;
|
||||
ea->namelen = namelen;
|
||||
|
@ -805,7 +818,7 @@ int __jfs_setxattr(tid_t tid, struct inode *inode, const char *name,
|
|||
/* DEBUG - If we did this right, these number match */
|
||||
if (xattr_size != new_size) {
|
||||
printk(KERN_ERR
|
||||
"jfs_xsetattr: xattr_size = %d, new_size = %d\n",
|
||||
"__jfs_setxattr: xattr_size = %d, new_size = %d\n",
|
||||
xattr_size, new_size);
|
||||
|
||||
rc = -EINVAL;
|
||||
|
|
Loading…
Reference in New Issue