Что может быть плохого в таком коде:
struct my_struct
{
...
short* offset;
...
short data[SOME_LENGTH];
};
...
void some_irq_handler(int irq, void* data)
{
struct my_struct* ms;
dma_addr_t dma;
...
ms = kzalloc(sizeof(struct my_struct), GFP_ATOMIC);
if ( ms == NULL ) goto cleanup;
ms->offset = ms->data;
...
dma = dma_map_single(...., ms->offset, ..., ...);
....
}
Вся эта мура в немного более сложном виде у меня завязана на SSC + PDC (архитектура AT91). Так вот если есть строка ms->offset = ms->data то передатчик SSC via PDC начинает терять первое слово (грубо говоря первый кадр попросту пропадает) если делать не так (без этой строки) все ОК. В чем может быть ЛАЖА?