You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fix from Herbert Xu: "This fixes a bug on sparc where we may dereference freed stack memory" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: Work around deallocated stack frame reference gcc bug on sparc.
This commit is contained in:
@@ -68,6 +68,7 @@
|
||||
static inline u32 rxe_crc32(struct rxe_dev *rxe,
|
||||
u32 crc, void *next, size_t len)
|
||||
{
|
||||
u32 retval;
|
||||
int err;
|
||||
|
||||
SHASH_DESC_ON_STACK(shash, rxe->tfm);
|
||||
@@ -81,7 +82,9 @@ static inline u32 rxe_crc32(struct rxe_dev *rxe,
|
||||
return crc32_le(crc, next, len);
|
||||
}
|
||||
|
||||
return *(u32 *)shash_desc_ctx(shash);
|
||||
retval = *(u32 *)shash_desc_ctx(shash);
|
||||
barrier_data(shash_desc_ctx(shash));
|
||||
return retval;
|
||||
}
|
||||
|
||||
int rxe_set_mtu(struct rxe_dev *rxe, unsigned int dev_mtu);
|
||||
|
||||
+4
-1
@@ -38,6 +38,7 @@ u32 btrfs_crc32c(u32 crc, const void *address, unsigned int length)
|
||||
{
|
||||
SHASH_DESC_ON_STACK(shash, tfm);
|
||||
u32 *ctx = (u32 *)shash_desc_ctx(shash);
|
||||
u32 retval;
|
||||
int err;
|
||||
|
||||
shash->tfm = tfm;
|
||||
@@ -47,5 +48,7 @@ u32 btrfs_crc32c(u32 crc, const void *address, unsigned int length)
|
||||
err = crypto_shash_update(shash, address, length);
|
||||
BUG_ON(err);
|
||||
|
||||
return *ctx;
|
||||
retval = *ctx;
|
||||
barrier_data(ctx);
|
||||
return retval;
|
||||
}
|
||||
|
||||
+4
-1
@@ -1078,6 +1078,7 @@ static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address,
|
||||
{
|
||||
SHASH_DESC_ON_STACK(shash, sbi->s_chksum_driver);
|
||||
u32 *ctx = (u32 *)shash_desc_ctx(shash);
|
||||
u32 retval;
|
||||
int err;
|
||||
|
||||
shash->tfm = sbi->s_chksum_driver;
|
||||
@@ -1087,7 +1088,9 @@ static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address,
|
||||
err = crypto_shash_update(shash, address, length);
|
||||
BUG_ON(err);
|
||||
|
||||
return *ctx;
|
||||
retval = *ctx;
|
||||
barrier_data(ctx);
|
||||
return retval;
|
||||
}
|
||||
|
||||
static inline bool f2fs_crc_valid(struct f2fs_sb_info *sbi, __u32 blk_crc,
|
||||
|
||||
+4
-2
@@ -43,7 +43,7 @@ static struct crypto_shash *tfm;
|
||||
u32 crc32c(u32 crc, const void *address, unsigned int length)
|
||||
{
|
||||
SHASH_DESC_ON_STACK(shash, tfm);
|
||||
u32 *ctx = (u32 *)shash_desc_ctx(shash);
|
||||
u32 ret, *ctx = (u32 *)shash_desc_ctx(shash);
|
||||
int err;
|
||||
|
||||
shash->tfm = tfm;
|
||||
@@ -53,7 +53,9 @@ u32 crc32c(u32 crc, const void *address, unsigned int length)
|
||||
err = crypto_shash_update(shash, address, length);
|
||||
BUG_ON(err);
|
||||
|
||||
return *ctx;
|
||||
ret = *ctx;
|
||||
barrier_data(ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(crc32c);
|
||||
|
||||
Reference in New Issue
Block a user