diff options
Diffstat (limited to 'drivers/firewire/ohci.c')
-rw-r--r-- | drivers/firewire/ohci.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 9e1db6490b9a..afb701ec90ca 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c | |||
@@ -2749,8 +2749,11 @@ static void copy_iso_headers(struct iso_context *ctx, const u32 *dma_hdr) | |||
2749 | { | 2749 | { |
2750 | u32 *ctx_hdr; | 2750 | u32 *ctx_hdr; |
2751 | 2751 | ||
2752 | if (ctx->header_length + ctx->base.header_size > PAGE_SIZE) | 2752 | if (ctx->header_length + ctx->base.header_size > PAGE_SIZE) { |
2753 | if (ctx->base.drop_overflow_headers) | ||
2754 | return; | ||
2753 | flush_iso_completions(ctx); | 2755 | flush_iso_completions(ctx); |
2756 | } | ||
2754 | 2757 | ||
2755 | ctx_hdr = ctx->header + ctx->header_length; | 2758 | ctx_hdr = ctx->header + ctx->header_length; |
2756 | ctx->last_timestamp = (u16)le32_to_cpu((__force __le32)dma_hdr[0]); | 2759 | ctx->last_timestamp = (u16)le32_to_cpu((__force __le32)dma_hdr[0]); |
@@ -2910,8 +2913,11 @@ static int handle_it_packet(struct context *context, | |||
2910 | 2913 | ||
2911 | sync_it_packet_for_cpu(context, d); | 2914 | sync_it_packet_for_cpu(context, d); |
2912 | 2915 | ||
2913 | if (ctx->header_length + 4 > PAGE_SIZE) | 2916 | if (ctx->header_length + 4 > PAGE_SIZE) { |
2917 | if (ctx->base.drop_overflow_headers) | ||
2918 | return 1; | ||
2914 | flush_iso_completions(ctx); | 2919 | flush_iso_completions(ctx); |
2920 | } | ||
2915 | 2921 | ||
2916 | ctx_hdr = ctx->header + ctx->header_length; | 2922 | ctx_hdr = ctx->header + ctx->header_length; |
2917 | ctx->last_timestamp = le16_to_cpu(last->res_count); | 2923 | ctx->last_timestamp = le16_to_cpu(last->res_count); |