[PATCH] ufs: wrong type cast
There are two ugly macros in ufs code: #define UCPI_UBH ((struct ufs_buffer_head *)ucpi) #define USPI_UBH ((struct ufs_buffer_head *)uspi) when uspi looks like struct { struct ufs_buffer_head ; } and USPI_UBH has some sence, ucpi looks like struct { struct not_ufs_buffer_head; } To prevent bugs in future, this patch convert macros to inline function and fix "ucpi" structure. Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
b71034e5e6
commit
9695ef16ed
@@ -63,17 +63,17 @@ struct ufs_buffer_head * ubh_bread_uspi (struct ufs_sb_private_info * uspi,
|
||||
count = size >> uspi->s_fshift;
|
||||
if (count <= 0 || count > UFS_MAXFRAG)
|
||||
return NULL;
|
||||
USPI_UBH->fragment = fragment;
|
||||
USPI_UBH->count = count;
|
||||
USPI_UBH(uspi)->fragment = fragment;
|
||||
USPI_UBH(uspi)->count = count;
|
||||
for (i = 0; i < count; i++)
|
||||
if (!(USPI_UBH->bh[i] = sb_bread(sb, fragment + i)))
|
||||
if (!(USPI_UBH(uspi)->bh[i] = sb_bread(sb, fragment + i)))
|
||||
goto failed;
|
||||
for (; i < UFS_MAXFRAG; i++)
|
||||
USPI_UBH->bh[i] = NULL;
|
||||
return USPI_UBH;
|
||||
USPI_UBH(uspi)->bh[i] = NULL;
|
||||
return USPI_UBH(uspi);
|
||||
failed:
|
||||
for (j = 0; j < i; j++)
|
||||
brelse (USPI_UBH->bh[j]);
|
||||
brelse (USPI_UBH(uspi)->bh[j]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -90,11 +90,11 @@ void ubh_brelse (struct ufs_buffer_head * ubh)
|
||||
void ubh_brelse_uspi (struct ufs_sb_private_info * uspi)
|
||||
{
|
||||
unsigned i;
|
||||
if (!USPI_UBH)
|
||||
if (!USPI_UBH(uspi))
|
||||
return;
|
||||
for ( i = 0; i < USPI_UBH->count; i++ ) {
|
||||
brelse (USPI_UBH->bh[i]);
|
||||
USPI_UBH->bh[i] = NULL;
|
||||
for ( i = 0; i < USPI_UBH(uspi)->count; i++ ) {
|
||||
brelse (USPI_UBH(uspi)->bh[i]);
|
||||
USPI_UBH(uspi)->bh[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user